如何避免在 json 字符串中额外嵌套

How to avoid extra nesting in json string

我尝试根据 wikipedia 中的语法创建 json 字符串。我使用以下代码创建了 json 字符串:

        var data = [];
        
        data.push(
            {
                "firstName": "John",
                "lastName": "Smith",
                "isAlive": true,
                "age": 27,      
            });
            
        var addressdata = [];   

        addressdata.push(
                    {
                        "streetAddress": "21 2nd Street",
                        "city": "New York",
                        "state": "NY",
                        "postalCode": "10021-3100"
                    });
        
        data.push(
            {
                "address" : addressdata
            }
        );      

字符串是正确的json字符串。但是,json 结构包含一些不必要的嵌套,如下图 1 和图 2 所示。更准确地说,地址块有多余的大括号,字符串也用括号而不是大括号括起来。那么,我做错了什么?如何避免这种不必要的嵌套,得到如图3所示的结构?

图1

图2

图 3

字符串是在 Ajax 请求中用 jsonData : data, 生成的。

您正在为 data 变量使用列表。这就是为什么在 JSON 正文的开头和结尾有括号。要克服这个问题,您可以在 data 变量中声明整个 JSON 主体,例如:

data = {
  "firstname": "test",
  (...)
  "address": [{
    "streetAddress": "test"
    (...)
  }]
}