2012-08-22 195 views
0

我對這個JSON對象非常陌生。所以我需要你們的幫助。我必須創建一個JSON對象,並且該對象有兩個孩子。一個孩子有一些孩子。如果我的問題很混亂,請參考下圖。它與嵌套列表類似。 例子:

所屬類別嵌套的JSON對象

<ul> 
    <li>CATEGORY_ID - A</li> 
    <li>PRODUCT_DETAILS 
     <ul> 
      <li>PRODUCT_ID - A.1</li> 
      <li>PRODUCT_NAME - AAAA1111</li> 
      <li>UNIT_COST - 0.1</li> 
     </ul> 
    </li> 
    <li>CATEGORY_ID - B</li> 
    <li>PRODUCT_DETAILS 
     <ul> 
      <li>PRODUCT_ID - B.1</li> 
      <li>PRODUCT_NAME - BBBBB1111</li> 
      <li>UNIT_COST - 0.2</li> 
     </ul> 
    </li> 
</ul> 

我試着做,但得到的JavaScript錯誤。任何人都可以幫助爲上述圖創建JSON。 注意:一個類別有多個產品詳細信息。這意味着PRODUCT_ID,PRODUCT_NAME和UNIT_COST將針對特定CATEGORY_ID重複多次。

的JavaScript代碼我已經試過

var product = '{"products_list":' + 
       '[' + 
        '{' + 
         '{"category_id":"A"},' + 
         '{"product_details":' + 
          '[' + 
           '{"product_id":"A.1","product_name":"AAAA1111", "unit_cost":"A1"},' + 
           '{"product_id":"A.2","product_name":"AAAA2222", "unit_cost":"A2"},' + 
           '{"product_id":"A.3","product_name":"AAAA3333", "unit_cost":"A3"},' + 
           '{"product_id":"A.4","product_name":"AAAA4444", "unit_cost":"A4"},' + 
           '{"product_id":"A.5","product_name":"AAAA5555", "unit_cost":"A5"},' + 
           '{"product_id":"A.6","product_name":"AAAA6666", "unit_cost":"A6"},' + 
           '{"product_id":"A.7","product_name":"AAAA7777", "unit_cost":"A7"},' + 
           '{"product_id":"A.8","product_name":"AAAA8888", "unit_cost":"A8"},' + 
           '{"product_id":"A.9","product_name":"AAAA9999", "unit_cost":"A9"},' + 
           '{"product_id":"A.0","product_name":"AAAA0000", "unit_cost":"A0"}' + 
          ']' + 
         '}' + 
        '},' + 
        '{' + 
         '{"category_id":"A"},' + 
         '{"product_details":' + 
          '[' + 
           '{"product_id":"A.1","product_name":"AAAA1111", "unit_cost":"A1"},' + 
           '{"product_id":"A.2","product_name":"AAAA2222", "unit_cost":"A2"},' + 
           '{"product_id":"A.3","product_name":"AAAA3333", "unit_cost":"A3"},' + 
           '{"product_id":"A.4","product_name":"AAAA4444", "unit_cost":"A4"},' + 
           '{"product_id":"A.5","product_name":"AAAA5555", "unit_cost":"A5"},' + 
           '{"product_id":"A.6","product_name":"AAAA6666", "unit_cost":"A6"},' + 
           '{"product_id":"A.7","product_name":"AAAA7777", "unit_cost":"A7"},' + 
           '{"product_id":"A.8","product_name":"AAAA8888", "unit_cost":"A8"},' + 
           '{"product_id":"A.9","product_name":"AAAA9999", "unit_cost":"A9"},' + 
           '{"product_id":"A.0","product_name":"AAAA0000", "unit_cost":"A0"}' + 
          ']' + 
         '}' + 
        '}' + 
       ']' + 
      '}'; 
+0

請向我們展示您的JavaScript,而不是某些HTML列表。 – Bergi

+0

請參閱我更新的問題與Javascript我已經嘗試..在此先感謝... –

+0

是否有一個原因,您使用的字符串包含JSON而不是隻是一個對象文字?不要讓自己變得不必要的困難。 –

回答

3

使用HTML樹是有用的,你會得到的所屬類別的跟隨着JSON表示:

[ 
    { 
     "CATEGORY_ID":"A", 
     "PRODUCT_DETAILS":[ 
     { 
      "PRODUCT_ID":"A.1", 
      "PRODUCT_NAME":"AAAA1111", 
      "UNIT_COST":0.1 
     } 
     ] 
    }, 
    { 
     "CATEGORY_ID":"B", 
     "PRODUCT_DETAILS":[ 
     { 
      "PRODUCT_ID":"B.1", 
      "PRODUCT_NAME":"BBBBB1111", 
      "UNIT_COST":0.2 
     } 
     ] 
    } 
] 

然而,你的JavaScript產生一個幾乎有效的JSON ,它被分配給product變量。你可以使用JSON.parse(),但這太複雜了。由於JavaScriptObjectNotation是Javascript object literal syntax的子集,因此應直接指定對象。

在你的JSON中,類別對象周圍有太多的花括號。你可以檢查例如與http://jsonformatter.curiousconcept.com/。已更正的腳本:

var product = { 
    "products_list":[ 
     { 
     "category_id":"A", 
     "product_details":[ 
      { 
       "product_id":"A.1", 
       "product_name":"AAAA1111", 
       "unit_cost":"A1" 
      }, 
      { 
       "product_id":"A.2", 
       "product_name":"AAAA2222", 
       "unit_cost":"A2" 
      }, 
      { 
       "product_id":"A.3", 
       "product_name":"AAAA3333", 
       "unit_cost":"A3" 
      }, 
      { 
       "product_id":"A.4", 
       "product_name":"AAAA4444", 
       "unit_cost":"A4" 
      }, 
      { 
       "product_id":"A.5", 
       "product_name":"AAAA5555", 
       "unit_cost":"A5" 
      }, 
      { 
       "product_id":"A.6", 
       "product_name":"AAAA6666", 
       "unit_cost":"A6" 
      }, 
      { 
       "product_id":"A.7", 
       "product_name":"AAAA7777", 
       "unit_cost":"A7" 
      }, 
      { 
       "product_id":"A.8", 
       "product_name":"AAAA8888", 
       "unit_cost":"A8" 
      }, 
      { 
       "product_id":"A.9", 
       "product_name":"AAAA9999", 
       "unit_cost":"A9" 
      }, 
      { 
       "product_id":"A.0", 
       "product_name":"AAAA0000", 
       "unit_cost":"A0" 
      } 
     ] 
     }, 
     { 
     "category_id":"A", 
     "product_details":[ 
      { 
       "product_id":"A.1", 
       "product_name":"AAAA1111", 
       "unit_cost":"A1" 
      }, 
      { 
       "product_id":"A.2", 
       "product_name":"AAAA2222", 
       "unit_cost":"A2" 
      }, 
      { 
       "product_id":"A.3", 
       "product_name":"AAAA3333", 
       "unit_cost":"A3" 
      }, 
      { 
       "product_id":"A.4", 
       "product_name":"AAAA4444", 
       "unit_cost":"A4" 
      }, 
      { 
       "product_id":"A.5", 
       "product_name":"AAAA5555", 
       "unit_cost":"A5" 
      }, 
      { 
       "product_id":"A.6", 
       "product_name":"AAAA6666", 
       "unit_cost":"A6" 
      }, 
      { 
       "product_id":"A.7", 
       "product_name":"AAAA7777", 
       "unit_cost":"A7" 
      }, 
      { 
       "product_id":"A.8", 
       "product_name":"AAAA8888", 
       "unit_cost":"A8" 
      }, 
      { 
       "product_id":"A.9", 
       "product_name":"AAAA9999", 
       "unit_cost":"A9" 
      }, 
      { 
       "product_id":"A.0", 
       "product_name":"AAAA0000", 
       "unit_cost":"A0" 
      } 
     ] 
     } 
    ] 
} 
+0

謝謝。這是工作正確,這就是我正在尋找.. :) –

+0

不要忘記[標記爲接受](http://stackoverflow.com/faq#howtoask),然後。您還有其他問題需要您選擇正確的答案 – Bergi

0

這是一個有點混亂的問題,但我可能不得不JSON像這樣

var data = [ 
    { 
    category_id: 'A', 
    product_id: 'A.1', 
    product_name: 'AAAA1111', 
    unit_cost: 0.1 
    }, 
    { 
    category_id: 'B', 
    product_id: 'B.1', 
    product_name: 'BBBB1111', 
    unit_cost: 0.2 
    } 
]; 

然後按類別進行過濾時,它顯示。您可能會發現http://underscorejs.org/用於過濾結果

+0

這個JSON怎麼樣? –

+0

他似乎在問題 – joevallender

+0

問題的筆記中詢問關於JS的一般對象語法感謝您爲我的問題所做的努力。我已經從「Bergi」得到了答案.. :) –

1

所有標識符都應該用引號引起來。
通過按類別id進行索引並製作對象類別數組我認爲您可以獲得數據結構的所有功能和特性,並使解決方案非常靈活。

var category = { 
    "A": [ 
    { "product_id": "A.1", "product_name": "AAAA1111", "unit_cost": 0.1 }, 
    { "product_id": "A.2", "product_name": "AAAA2222", "unit_cost": 0.2 }, 
    ], 
    "B": [ 
    { "product_id": "B.1", "product_name": "BBBB1111", "unit_cost": 0.2 }, 
    { "product_id": "B.2", "product_name": "BBBB2222", "unit_cost": 0.4 }, 
    ] 
}; 
+0

感謝您爲我的問題所做的努力。我從「Bergi」得到了答案.. :) –