无法为客户端形成正确的JSON响应

时间:2013-12-16 09:55:48

标签: java javascript json get

我以这种方式发送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");

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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

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

我还建议使用更轻薄的版本来删除composer属性,因为分配数组的属性composers非常直观,包含作曲家对象。

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

JSON也使用双引号而不是单引号,您需要根据需要进行替换。

如果您将来遇到这些类型的问题,只需将您的JSON转到json lint进行验证,它就会告诉您所有问题。

答案 2 :(得分:2)

您有JSON错误。修理它。

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

答案 3 :(得分:0)

试试这个:

{
    "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