Javascript jQuery ajax之后出现JSON格式错误
我通过jqueryajax调用从cordova应用程序接收nodejs应用程序上的数据,其格式为Javascript jQuery ajax之后出现JSON格式错误,javascript,json,Javascript,Json,我通过jqueryajax调用从cordova应用程序接收nodejs应用程序上的数据,其格式为 { "network[msisdn]": "+254738XXXXXX", "network[country]": "ke", "network[roaming]": "false", "network[simState]": "Ready", "network[network]": "HSPA", "network[simSer
{
"network[msisdn]": "+254738XXXXXX",
"network[country]": "ke",
"network[roaming]": "false",
"network[simState]": "Ready",
"network[network]": "HSPA",
"network[simSerial]": "89254031021032011310",
"network[subscriber]": "639031023201131",
"network[service]": "GSM"
}
而不是通常的
{
network: {
"msisdn" : "",
...
}
}
在访问嵌套键(如objectName.network.msisdn)时,我可以在cordova phone应用程序中循环对象,但一旦我在nodejs后端接收到数据,我就无法循环
我发布的数据如下所示
$.ajax({
url: 'http://'+$scope.api.host+':'+$scope.api.port+'/notices',
method: 'POST',
dataType: 'json',
data: $scope.storage.history[0]
}).then(function(response){
//! STORE THE RESULT IN THE RELEVANT OBJECT
$scope.storage.history[nextPos].locale = response;
alert(JSON.stringify(response));
});
我想从对象访问子键
在发布数据之前,我尝试过Json.Parse(Json.stringify(objectName))
我还尝试在jQuery ajax调用中不使用json数据类型发布
我尝试在后端解析JSON.parse()对象,但都没有用
非常感谢您的帮助。如果您无法更改数据的返回方式,可以使用字符串表示法访问数据。这是一个使用字符串表示法的示例,也是一个函数,您可以使用它将其转换为嵌套对象,以便使用点表示法
var exampleData={
“网络[msisdn]:“+254738xxxxx”,
“网络[国家]”:“ke”,
“网络[漫游]:“false”,
“网络[simState]:“就绪”,
“网络[网络]:“HSPA”,
“网络[模拟串行]:“89254031021032011310”,
“网络[用户]:“639031023201131”,
“网络[服务]:“GSM”,
“simpleKey”:“simpleValue”
}
console.log(例如数据['network[country]]]);//原木->木料
//这将在适当的位置转换关键点
//可以修改它以返回新对象
功能键(数据){
变量块;
for(var输入数据){
if(data.hasOwnProperty(key)){
片段=键。匹配(/(.+)\[(.+)]/);
若有(件){
数据[pieces[1]]=数据[pieces[1]]| |{};
数据[件[1]][件[2]]=数据[键];
删除数据[键];
}
}
}
}
转换键(例如数据);
console.log(示例数据);
console.log(exampleData.network.simState);//Logs->Ready
我不明白,你需要这样格式化对象吗(网络[msisdn]
)?感谢Ahmad Bamieh的关注,我需要将其格式化为network.msisdn,但我得到的是一个键为“network[msisdn]”的对象,而不是Thank@rdbya,你的解决方案工作正常,但一旦我用数据替换它,我发现错误:**data.hasOwnProperty不是函数**@rdbya,非常感谢。我用if(数据[key])和if(片段)替换了那行代码,从而解决了这个问题。。。防止简单键值对被操纵的验证。@ianmin2很高兴您能弄明白它。我更新了我的答案以包含您提到的更改。我刚刚发现我得到了“.hasownproperty”未定义错误,因为我使用了一个arrow函数作为父函数,并且默认情况下没有为它们分配原型。