Javascript 将JSON数据馈送到HTML表单字段中

Javascript 将JSON数据馈送到HTML表单字段中,javascript,jquery,html,json,forms,Javascript,Jquery,Html,Json,Forms,我有一些建议: "accessories":{ "tableware01":{ "sku":"tableware01", "forceAmountHidden":"1", "upsell":"1", "discountAll":"1", "forceRemove":"1", "percentageDiscount":"12", "fixedDiscount":"1", "forceAmount":"1",

我有一些建议:

"accessories":{
  "tableware01":{
     "sku":"tableware01",
     "forceAmountHidden":"1",
     "upsell":"1",
     "discountAll":"1",
     "forceRemove":"1",
     "percentageDiscount":"12",
     "fixedDiscount":"1",
     "forceAmount":"1",
     "maximumQuantity":"12",
     "endDate":"2014-12-12T00:00:00",
     "minimumQuantity":"1",
     "startDate":"2012-12-12T00:00:00"
  },
  "cla000":{
     "sku":"cla000",
     "forceAmountHidden":"1",
     "upsell":"1",
     "discountAll":"1",
     "forceRemove":"1",
     "percentageDiscount":"23",
     "fixedDiscount":"1",
     "forceAmount":"1",
     "maximumQuantity":"123",
     "endDate":"2015-02-03T00:00:00",
     "minimumQuantity":"1",
     "startDate":"2011-02-03T00:00:00"
  }
   }
我需要将这些数据推送到一个表单中。我需要生成的字段必须如下所示:

<input type="hidden" name="accsku1">
<input type="hidden" name="accdisc1">
<input type="hidden" name="accperc1">
<input type="hidden" name="accreg1">
<input type="hidden" name="accupsell1">
<input type="hidden" name="accnum">
<input type="hidden" name="acclimit1">
<input type="hidden" name="accforce1">
<input type="hidden" name="accforcehid1">
<input type="hidden" name="accforcerm1">

我无法控制JSON中的键,也无法控制表单字段的名称——这些需要保留。我知道哪些字段对应于JSON中的哪些键,即“accdisc”是“fixedDiscount”。我需要将JSON中的正确值插入字段的值中。此外,字段根据附件的数量进行迭代(从1开始),即我的表单将继续

<input type="hidden" name="accsku2">
<input type="hidden" name="accdisc2">

等等

我对使用JSON很陌生,但我已经完成了这个项目,直到现在我还不知道如何处理这个问题。我想能够生成字段,因为我不知道我将有多少配件。我想知道我是否可以创建某种映射,在其中我可以说“sku匹配输入accsku”,然后添加索引

JSON是一个较大文件的片段,其中包含大量具有不同键的产品数据,这是我如何将其拉入表单的一个示例:

$.getJSON("urltoJSONhere",function(product){
    $.each(product.extendedFields, function(i){
        $( "<input type='hidden' name='"+this.name+"' value='"+this.data+"'>" ).appendTo( form );
    });
$.getJSON(“urltoJSONhere”,函数(产品){
$.each(product.extended字段,函数(i){
$(“”)。附件(表格);
});
上面的“extendedFields”更简单,因为我可以使用键“name”和“data”来生成输入字段,但我真的不知道如何使用“附件”来解决上面的问题

谁能给我一些建议,我可以如何处理这个问题,请

其他澄清信息:

我知道这一点: sku=accsku, fixedDiscount=accdisc, 百分比折扣=accperc, 折扣全部=增值, upsell=accupsell, 最小数量=数量, 最大数量=acclimit, forceAmount=accforce, forceAmountHidden=accforcehid, forceRemove=acforcerm

我需要这张表格:

<input type="hidden" name="accsku1" value="tableware01">
<input type="hidden" name="accdisc1" value="1">
<input type="hidden" name="accperc1" value="12">
<input type="hidden" name="accreg1" value="1">
<input type="hidden" name="accupsell1" value="1">
<input type="hidden" name="accnum1" value="1">
<input type="hidden" name="acclimit1" value="12">
<input type="hidden" name="accforce1" value="1">
<input type="hidden" name="accforcehid1" value="1">
<input type="hidden" name="accforcerm1" value="1">
<input type="hidden" name="accsku2" value="cla000">
<input type="hidden" name="accdisc2" value="1">
<input type="hidden" name="accperc2" value="23">
<input type="hidden" name="accreg2" value="1">
<input type="hidden" name="accupsell2" value="1">
<input type="hidden" name="accnum2" value="1">
<input type="hidden" name="acclimit2" value="123">
<input type="hidden" name="accforce2" value="1">
<input type="hidden" name="accforcehid2" value="1">
<input type="hidden" name="accforcerm2" value="1">

检查此链接是否有用

您需要使用嵌套的
。每个
来访问内部数据


我的一位同事给了我一些帮助,他帮助我创建了一个映射,然后用于构建输入字段。我将发布此消息,以防其他人需要类似的解决方案。该脚本使用id为“accform”的表单

var accessories = {
"tableware01": {
    "sku": "tableware01",
        "forceAmountHidden": "1",
        "upsell": "1",
        "discountAll": "1",
        "forceRemove": "1",
        "percentageDiscount": "12",
        "fixedDiscount": "1",
        "forceAmount": "1",
        "maximumQuantity": "12",
        "endDate": "2014-12-12T00:00:00",
        "minimumQuantity": "1",
        "startDate": "2012-12-12T00:00:00"
},
    "cla000": {
    "sku": "cla000",
        "forceAmountHidden": "1",
        "upsell": "1",
        "discountAll": "1",
        "forceRemove": "1",
        "percentageDiscount": "23",
        "fixedDiscount": "1",
        "forceAmount": "1",
        "maximumQuantity": "123",
        "endDate": "2015-02-03T00:00:00",
        "minimumQuantity": "1",
        "startDate": "2011-02-03T00:00:00"
}
}

var map = {
    sku: "accsku",
    forceAmountHidden: "accforcehid",
    upsell: "accupsell",
    discountAll: "accreg",
    forceRemove: "accforcerm",
    percentageDiscount: "accperc",
    fixedDiscount: "accdisc",
    forceAmount: "accforce",
    maximumQuantity: "acclimit",
    minimumQuantity: "accnum",
    endDate:"endDate",
    startDate:"startDate"
}
var form = $("#accform");
var index = 1;
for (var k in accessories) {
    var accessory = accessories[k];
    for (var prop in accessory) {
        var name = map[prop] + index;
        $('input[name=' + name + ']').val(name);
        $( "<input type='text' name='"+name+"' value='"+accessory[prop]+"'>" ).appendTo( form );
    }
    index++;
}
var附件={
“桌面01”:{
“sku”:“桌面01”,
“forceAmountHidden”:“1”,
“追加销售”:“1”,
“折扣全部”:“1”,
“强制移除”:“1”,
“百分比折扣”:“12”,
“fixedDiscount”:“1”,
“金额”:“1”,
“最大数量”:“12”,
“结束日期”:“2014-12-12T00:00:00”,
“最小数量”:“1”,
“开始日期”:“2012-12-12T00:00:00”
},
“cla000”:{
“sku”:“cla000”,
“forceAmountHidden”:“1”,
“追加销售”:“1”,
“折扣全部”:“1”,
“强制移除”:“1”,
“百分比折扣”:“23”,
“fixedDiscount”:“1”,
“金额”:“1”,
“最大数量”:“123”,
“结束日期”:“2015-02-03T00:00:00”,
“最小数量”:“1”,
“开始日期”:“2011-02-03T00:00:00”
}
}
变量映射={
sku:“accsku”,
forceAmountHidden:“accforcehid”,
upsell:“accupsell”,
折扣全部:“增值”,
forceRemove:“acforcerm”,
百分比折扣:“accperc”,
修正Discount:“accdisc”,
forceAmount:“accforce”,
最大数量:“acclimit”,
最小数量:“accnum”,
endDate:“endDate”,
开始日期:“开始日期”
}
变量形式=$(“#accform”);
var指数=1;
用于(附件中的var k){
var附件=附件[k];
用于(附件中的var prop){
变量名称=映射[prop]+索引;
$('input[name='+name+']').val(name);
$(“”)。附件(表格);
}
索引++;
}

是您的json格式良好。如果不是,请根据JSONLint将其有效。如果有帮助的话,以下是全部内容:也许我没有充分解释我的问题。我访问数据没有问题,我需要使用数据生成一些表单字段-如上所示。对于附件下的每个对象,我需要使用键/值对对表单字段进行评级。我可以轻松打印:但我的表单无法识别name=“sku”-它需要命名为name=“accsku1”。因此,我的问题是,如果我知道什么键与什么名称匹配,我如何生成这样的字段:不知道我是否满足您的要求,但检查这是否有助于我们实现目标,但我需要在输入字段中使用一个不在JSON中的非常特定的名称。请查看我在原始帖子中的编辑。检查此添加的名称。每个要访问密钥和值,很抱歉,事实并非如此,我可以看到id是使用前缀“acc”和密钥的前3个字符生成的。我必须使用非常具体的名称(在您的示例id中)在表单字段中。我无法使用您使用的模式生成。JSON中的键和我需要的名称之间没有链接。我必须准确生成上面我的附加信息中显示的字段。非常感谢您的帮助,但我需要能够将完全不同的名称映射到每个键/值对。