我有以下JSON:
{
"firstArrayOfJSON": [
{
"something" : "something"
},
{
"another" : "another"
},
{
"secondArrayOfJson" : [
{
"something" : "something",
"other" : "other"
}
]
}
]
}
在变量监视(Google Chrome)上,在进行任何处理之前,对象显示为:
[0]: Object
something : "something"
another : "another"
secondArrayOfJson : Object
[0]: something : "something",
[1]: other : "other"
以下JQuery ajax:
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: "json"
});
在服务器(Express JS)上,我有一个测试服务,只是吐出请求体。然后我继续检查客户端的响应。
回复发生了变化:
第一级数组显示为:
[0]: Object
something : "something"
another : "another"
secondArrayOfJson : Object
[0][something] : "something",
[1][other] : "other"
我仍然可以正常使用该对象:firstArrayOfJson[2].secondArrayofJson[0].something
我测试了在Mongo服务器上的存储,数组元素看起来像[0][something]
(Robomongo)
当我向secondArrayOfJson
添加另一个对象时,"问题"消失。
因此,除非这是Google Chrome和Robomongo上发生的观看者问题,否则这就是对象的传递方式。
我想知道这是否合乎逻辑,或者我是否应该担心我正在做的事情。
答案 0 :(得分:0)
实际上,我的AJAX查询缺少两个重要的参数。根据JQ文件:
data类型:PlainObject或String或Array要发送到的数据 服务器。如果不是字符串,它将转换为查询字符串。 它附加到GET请求的URL。请参阅processData选项 防止这种自动处理。对象必须是键/值对。如果 value是一个数组,jQuery使用相同的键序列化多个值 基于传统设置的价值(如下所述)。
添加
processData : false,
contentType : "application/json"
我确保JQ保持对象完整无缺。我已经尝试过,它运作得很好。
感谢Felix Kling揭开光芒。