2012-08-22 57 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”得到了答案.. :) –