Javascript JSON解析器错误

Javascript JSON解析器错误,javascript,json,Javascript,Json,我正在使用json.org中的json解析器来处理我的应用程序中的数据。问题是解析器无法处理某些json格式 一个请求接收以下数据 <?php $obj = array("cities"=>array("city1","city2","city3","city4","city5")); echo json_encode($obj); ?> 下面的代码处理上述数据 var data = json_parse(XMLHttpRequestObject.r

我正在使用json.org中的json解析器来处理我的应用程序中的数据。问题是解析器无法处理某些json格式

一个请求接收以下数据

  <?php

  $obj = array("cities"=>array("city1","city2","city3","city4","city5"));

  echo json_encode($obj);

  ?>
下面的代码处理上述数据

  var data = json_parse(XMLHttpRequestObject.responseText, function (key, value){

  alert(key +' = '+value);

  });
解析器失败并抛出错误


有人知道如何处理这样的对象吗。

为了快速测试,我执行了以下命令,它似乎可以工作:

var text = '{ "cities": ["city1","city2","city3","city4","city5"] }';
var data = json_parse(text, function (key, value){
  document.write(key + ' = ' + value + '<br/>');
});
document.write('result = ' + data);
XMLHttpRequestObject.responseText
字段中有什么内容


另外,您不应该从
函数(键,值)
返回一个值吗?

为了快速测试,我执行了以下命令,它似乎可以工作:

var text = '{ "cities": ["city1","city2","city3","city4","city5"] }';
var data = json_parse(text, function (key, value){
  document.write(key + ' = ' + value + '<br/>');
});
document.write('result = ' + data);
XMLHttpRequestObject.responseText
字段中有什么内容


另外,您不应该从
函数(键,值)
返回值吗?

我敢打赌问题在于您的数据。城市3之前的
错误


如果您包含一些有关抛出错误的信息,这会有所帮助。

我敢打赌,问题在于您的数据。城市3之前的
错误


如果您包含一些有关抛出错误的信息,这会有所帮助。

您需要将键和值放入双引号中:

{
"cities": ["city1","city2","city3","city4","city5"] 
}
值可以是双引号中的字符串、数字、true或false或null、对象或数组。这些结构可以嵌套


您可以使用来验证代码。

您需要将键和值放入双引号中:

{
"cities": ["city1","city2","city3","city4","city5"] 
}
值可以是双引号中的字符串、数字、true或false或null、对象或数组。这些结构可以嵌套


您可以使用验证代码。

由于JSON数据格式错误,解析器失败。
city3
前面有两个引号,
city4
的起始引号缺失

{
cities: ['city1','city2','city3','city4','city5'] 
}
您是否控制生成此输出的代码?它看起来像是手工构建的,如果可能的话,它应该使用JSON库生成

PHP示例:

$output = array(
  'cities' => array('city1', 'city2', 'city3', 'city4', 'city5')
);
echo json_encode($output);
输出:

{"cities":["city1","city2","city3","city4","city5"]}

解析程序失败,因为JSON数据格式不正确。
city3
前面有两个引号,
city4
的起始引号缺失

{
cities: ['city1','city2','city3','city4','city5'] 
}
您是否控制生成此输出的代码?它看起来像是手工构建的,如果可能的话,它应该使用JSON库生成

PHP示例:

$output = array(
  'cities' => array('city1', 'city2', 'city3', 'city4', 'city5')
);
echo json_encode($output);
输出:

{"cities":["city1","city2","city3","city4","city5"]}

问题似乎出在应用程序的json编码算法中

由于您没有指定应用程序语言,因此我无法告诉您要使用的确切函数/方法,但我建议您使用标准json编码技术,而不是重新发明轮子


例如,在php中,您可以使用开源世界中众多编码库之一的
json\u encode
标准函数。

问题似乎在于应用程序的json编码算法

由于您没有指定应用程序语言,因此我无法告诉您要使用的确切函数/方法,但我建议您使用标准json编码技术,而不是重新发明轮子


例如,在php中,您可以使用开源世界中众多编码库之一的
json\u encode
标准函数。

请始终,始终包含准确的错误消息!您在编辑中遗漏了一些内容(提示:Pekka要求您这样做),请始终,始终包含准确的错误消息!您在编辑过程中遗漏了一些内容(提示:Pekka要求这样做),代码是由php生成的。如果你运行代码,你会发现键是索引。预期结果:警报('城市'=[对象]);代码由php生成。如果你运行代码,你会发现键是索引。预期结果:警报('城市'=[对象]);如果你像我一样用解析器处理这个输出:json_parse(XMLHttpRequestObject.responseText,function(key,value){alert(key+'='+value);}),你不会得到预期的结果,如果你在对象上使用“for in”循环的话。返回的预期键应该是“cities”,而不是0、1、2、3、4,如果你像我所做的那样用解析器处理输出:json_parse(XMLHttpRequestObject.responseText,function(key,value){alert(key+'='+value);})如果你在对象上使用“for-in”循环,你不会得到预期的结果。预期返回的键应该是“cities”,而不是0、1、2、3、4