2013-11-21 24 views
0

我有一些JSON:飼料JSON數據轉換成HTML表單字段

"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); 
    }); 

以上就是對「簡單得多extendedFields',因爲我可以使用'name'和'data'鍵來生成輸入字段,但我真的不知道如何用'附件'來解決上述問題。

任何人都可以給我一些建議,我可能會如何處理這個請嗎?

澄清附加信息:

我知道這一點: SKU = accsku, fixedDiscount = accdisc, percentageDiscount = accperc, discountAll = accreg, 追加銷售= accupsell, minimumQuantity = accnum, maximumQuantity = acclimit, forceAmount = accforce, forceAmountHidden = accforcehid, forceRemove = accforcerm

我需要第是在我的形式:

<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"> 
+0

是否是ur json格式良好。如果不是請發帖 –

+0

根據JSONLint其有效。如果有幫助,以下是全部內容:http:// jsfiddle。net/hayleyeaston/u5TjH/1/ – Hayley

回答

0

我已經從一位同事誰給我一些幫助創建地圖,然後將其用於建立輸入字段一些幫助。我發佈這個以防其他人需要類似的解決方案。該腳本使用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++; 
} 
0

檢查此鏈接是否有幫助。

您需要使用嵌套的.each來訪問內部數據。

http://jsfiddle.net/pE6yE/9/

+0

也許我沒有足夠好地解釋我的問題。我在訪問數據時沒有問題,我需要使用這些數據來生成一些表單字段 - 如上所示。對於附件下的每個對象,我需要使用鍵/值對來生成一個表單域。我可以輕鬆打印: 但我的表單不能識別name =「sku」 - 它需要被稱爲name =「accsku1」。 所以我的問題是我怎麼能產生這樣的領域,因爲我知道什麼樣的關鍵字匹配什麼名字: Hayley

+0

不知道我是否有你的要求,但檢查是否有幫助http://jsfiddle.net/pE6yE/20/ –

+0

我們正在那裏,但我需要在輸入字段中使用非特定名稱,而不是在JSON中。請你可以在原帖中看到我的編輯。 – Hayley