将标签附加到JSON响应

时间:2011-05-04 14:43:51

标签: javascript json

{title:'Alan', hasChild:true},
{title:'Alice', hasDetail:true},
{title:'Amos'},
{title:'Alonzo'},
{title:'Brad'},
{title:'Brent'},    
{title:'Billy'},    
{title:'Brenda'},   
{title:'Callie'},
{title:'Cassie'},   
{title:'Chris'},

这是我的JSON响应数据,现在我如何将Header label附加到每个数据的第一项。有些东西会让我区分出这些是A,这些是B.

更改的响应应如下所示。

  {title:'Alan', hasChild:true, header:'A'},
    {title:'Alice', hasDetail:true},{title:'Alexander'},
    {title:'Amos'},
    {title:'Alonzo'},
    {title:'Brad', header:'B'},
    {title:'Brent'},    
    {title:'Billy'},    
    {title:'Brenda'},   
    {title:'Callie', header:'C'},
    {title:'Cassie'},   
    {title:'Chris'}, 

1 个答案:

答案 0 :(得分:2)

您引用的代码/标记不是JSON。 (JSON要求属性名称用双引号,并且字符串文字用双引号。)它看起来像是JavaScript数组文字中间的摘录,其中每个数组条目都由对象文字定义。 E.g:

var people = [
    {title:'Alan', hasChild:true},
    {title:'Alice', hasDetail:true},
    {title:'Amos'},
    {title:'Alonzo'}
];

我认为在你的问题中,你在第一版和第二版之间做了两件事:

  1. 您已在第一个条目(“Alan”)(以及“Brad”和“Callie”)中添加了header属性。
  2. 您在“Alice”和“Amos”之间添加了一个新的“Alexander”条目。
  3. 如果您对这些文字定义的数组有引用,则可以轻松添加属性(上面的#1):

    people[0].header = 'A';
    

    在数组中位置header的对象上创建一个新属性0

    JavaScript还有一个插入数组的函数,称为splice,可以用来插入到中间的数组中(上面的#2):

    people.splice(2, 0, {title: 'Alexander'});
    

    即:从索引2(“Amos”条目)开始,删除0元素,然后插入此元素。这种变化已经到位。

    如果你拥有的是一个包含JSON的字符串,那么添加它就是字符串解析和拼接练习,或者将JSON反序列化为对象,将属性添加到对象,以及重新序列化它再次出现在JSON上。


    以上是有效JSON格式的上述数组示例:

    [
        {"title":"Alan", "hasChild":true},
        {"title":"Alice", "hasDetail":true},
        {"title":"Amos"},
        {"title":"Alonzo"}
    ]
    

    就像它出现在以JSON格式存储的文件中一样,或者在线上。如果在程序代码中的字符串文字中,当然需要使用该语言的相应字符串文字形式,并为双引号进行必要的转义 - 如果有的话。例如,JSON为JavaScript字符串文字:

    var jsonString = '[' +
        '{"title":"Alan", "hasChild":true},' +
        '{"title":"Alice", "hasDetail":true},' +
        '{"title":"Amos"},' +
        '{"title":"Alonzo"}' +
    ']';