【问题标题】:Can't form correct JSON response for the client无法为客户端形成正确的 JSON 响应
【发布时间】:2013-12-16 09:55:48
【问题描述】:

我以这种方式发送GET 请求:

$.ajax({
    url: myUrl,
    type:"GET",
    dataType: "json",
    success: callback        
});

在服务器端,我形成如下json字符串并发送给客户端:

"{'composers':
    {'composer':
        {
        'id':2,
        'firstName': 'Arcangelo',
        'lastName': 'Corelli'
        }
    },
    {'composer':
        {
        'id':7,
        'firstName': 'Antonio',
        'lastName': 'Vivaldi'
        }
    }
}"

客户端什么也得不到! 但如果我对响应使用 XML 格式,它就可以正常工作!我正在设置这样的内容类型:

response.setContentType("application/json");

【问题讨论】:

标签: java javascript json get


【解决方案1】:

JSON 需要将composers 属性设为数组:

{
    "composers": [
        {
            "composer": {
                "id": 2,
                "firstName": "Arcangelo",
                "lastName": "Corelli"
            }
        },
        {
            "composer": {
                "id": 7,
                "firstName": "Antonio",
                "lastName": "Vivaldi"
            }
        }
    ]
}

我还推荐一个删除 composer 属性的更精简版本,因为分配数组的属性 composers 包含 composer 对象是非常直观的。

{
    "composers": [
        {
                "id": 2,
                "firstName": "Arcangelo",
                "lastName": "Corelli"
        },
        {
                "id": 7,
                "firstName": "Antonio",
                "lastName": "Vivaldi"
        }
    ]
}

另外 JSON 使用双引号而不是单引号,您需要酌情替换。

当您以后遇到这些类型的问题时,只需将您的 JSON 带到 json lint 进行验证,它会告诉您所有问题。

【讨论】:

    【解决方案2】:

    我相信您的 JSON 格式不正确。

    composers 元素看起来像一个数组,而 JSON 应该更像:

    {"composers":
        [
            {
            "id":2,
            "firstName": "Arcangelo",
            "lastName": "Corelli"
            },
            {
             "id":7,
             "firstName': "Antonio",
             "lastName': "Vivaldi"
            }
        ]
    }
    

    【讨论】:

      【解决方案3】:

      您有 JSON 错误。修理它。

      "{'composers':[
          {'composer':
              {
              'id':2,
              'firstName': 'Arcangelo',
              'lastName': 'Corelli'
              }
          },
          {'composer':
              {
              'id':7,
              'firstName': 'Antonio',
              'lastName': 'Vivaldi'
              }
          }
        ]
      }"
      

      【讨论】:

        【解决方案4】:

        试试这个:

        {
            "composers": [
                {
                    "composer": {
                        "id": 2,
                        "firstName": "Arcangelo",
                        "lastName": "Corelli"
                    }
                },
                {
                    "composer": {
                        "id": 7,
                        "firstName": "Antonio",
                        "lastName": "Vivaldi"
                    }
                }
            ]
        }
        
        
        and check your json is valid or not using jsonlint
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-30
          • 1970-01-01
          • 2018-08-03
          • 2016-10-10
          • 1970-01-01
          • 2016-04-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多