Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用DOJO-AJAX将字符串转换为数组_Javascript_Json_Ajax_Dojo - Fatal编程技术网

Javascript 使用DOJO-AJAX将字符串转换为数组

Javascript 使用DOJO-AJAX将字符串转换为数组,javascript,json,ajax,dojo,Javascript,Json,Ajax,Dojo,我遇到了一个问题,我从一个我没有控制权的外部API接收到一条JSON消息,如下所示: “{”searchResults:“{”resultNumber:“{”1,“distance:“0.06”,sourceName:“mqap.ntpois”,“name:“Chef's Express”,“distance unit:“m”,“key:“1f9bcc0e-e03a-44d9-b034-c235c344997e2”,“fields:{”postal_code:“17101”},{”resultN

我遇到了一个问题,我从一个我没有控制权的外部API接收到一条JSON消息,如下所示:

“{”searchResults:“{”resultNumber:“{”1,“distance:“0.06”,sourceName:“mqap.ntpois”,“name:“Chef's Express”,“distance unit:“m”,“key:“1f9bcc0e-e03a-44d9-b034-c235c344997e2”,“fields:{”postal_code:“17101”},{”resultNumber:“distance:“0.07,”sourceName:“mqap.ntpois”,“name:“Prive”,“distance unit:“m”,“key:“ff5dcd5f-32ec-45e69f4efd431f4”“,”字段“:{“邮政编码”:“17101”},{“结果编号”:3,“距离”:0.07,“源名称”:“mqap.ntpois”,“名称”:“波旁街站”,“距离单位”:“m”,“键”:“a4f03b4d-12de-44ad-9ada-0f19beb34004”,“字段”:{“邮政编码”:“17101”},{“结果编号”:4,“距离”:0.11,“源名称”:“mqap.ntpois”,“名称”:“帕斯夸尔餐厅”,“距离单位”:“m”,“键”:”“a05c487e-d81d-48e0-87a8-718db70ec366”,“字段:{“邮政编码”:“17101”},{“结果编号”:5,“距离”:0.12,“源名称”:“mqap.ntpois”,“名称”:“Palumbos意大利餐厅”,“距离单位”:“m”,“键”:“595afcbd-f61a-41ea-be2f-753648a8b7e8”,“字段:{“邮政编码”:“17101”},”,“结果名称”:“距离:0.12”,“源名称”:“mqap.ntpois”:在红门的Zias,“距离单位”:“m”,“键”:“1393b154-0785-4ca8-8f3a-4190ab808817”,“字段”:{“邮政编码”:“17101”},{“结果编号”:7,“距离”:0.13,“源名称”:“mqap.ntpois”,“名称”:“沙丘地中海烹饪有限责任公司”,“距离单位”:“m”,“键”:“3f8a43d1-7948-4653-bdbb-312F2466F”,“字段”:{“邮政编码”:“17101”},{“结果编号”,“距离”:8“:0.13,“sourceName”:“mqap.ntpois”,“name”:“Bricco”,“distance unit”:“m”,“key”:“3f2e7653-1313-4e17-b70a-9c04a31a029f”,“fields”:{“postal_code”:“17101”},{“resultNumber”:9,“distance”:0.13,“sourceName”:“mqap.ntpois”,“name”:“姜饼人市中心”,“distance unit”:“m”,“key”:“2c36f5e0-801e-4f9e-916-e602a93d”,“postail code”:”{“结果编号”:10,“距离”:0.14,“源名称”:“mqap.ntpois”,“名称”:“国际之家”,“距离单位”:“m”,“键”:“2f328ca1-6fe4-44ec-964e-f7a6a73bfafd”,“字段”:{“邮政编码”:“17101”}],“原产地”:{“latLng”:{“lng”:-76.881821”,“lat”:40.259572},“行政区4”:“多芬县”,“行政区类型”:“城市”,“行政区类型”:“县”,“行政区类型”:“行政区”:“哈里斯堡”街道“,”行政区域1“,”美国“,”行政区域3“,”PA“,”类型“,”s“,”显示LATLNG“,”lat“,”lat“,”linkId“,”282035911,“postalCode“,”街道“,”N“,”dragPoint“,”false“,”行政区域1类型“,”国家“,”地理编码质量“,”城市“,”地理编码质量代码“,”A5XAX“,”行政区域3类型“,”州“,”结果计数“,”10,“hostedData“,”表格名“,”mqap.POIS“,”“标准外”:“组基本代码=?”,“参数”:[“581208”],“列名”:[“邮政编码”],“总页面”:1,“信息”:{“状态代码”:0,“版权”:{“文本”:©2015 MapQuest,Inc.,“imageUrl”:“imageAltText”:©2015 MapQuest,Inc.,“消息”:[],“选项”:{“kmlStyleUrl”:“,“形状格式”:“原始”、“歧义”:真,“页面大小”:10,“半径”:1,“当前页面”:1,“单位”:“m”,“最大匹配数”:10}”

我有使用DOJO-AJAX和CORS发送和接收消息的限制,但由于某些原因,它是一个普通字符串,我不能使用下面的代码在该对象中循环:

renderReply:函数(reply、textStatus、jqXHR){ var pois=new MQA.ShapeCollection(); var html='IDNAMEADDRESSZIPCATEGORYDISTANCE(英里)'

var jsonObj=dojo.toJson(回复); //添加POI标记并填充搜索结果表 对于(i=0;i 正如您所看到的,我已经尝试使用toJson转换它,但出于某种原因,最糟糕的是在消息中添加\并且在回复[I]中,第一个对象是“”引号。我已经尝试使用reply.searchResults访问子对象,但它说的是未定义的对象


谢谢

我不确定这里是否有足够的上下文来给出一个理想的答案,但我要立即指出,该字符串已经是JSON了,所以
dojo.toJson
正在对已经字符串化的内容进行字符串化。您可能需要
dojo.fromJson
(或者,在较新版本的dojo中最好是
dojo/JSON.parse

我还要指出,一旦解析了这个JSON字符串,您可能希望迭代解析对象中的
searchResults
属性,而不是对象本身

require(['dojo/json', ...], function(JSON, ...) {
    // Assuming `reply` contains the string:
    var replyObj = JSON.parse(reply);
    var results = replyObj.searchResults;
    for (var i = 0, l = results.length; i++) {
        // Do something with results[i]
    }
});

谢谢你的回复,即使我的问题是在错误的关键字,我需要做的fromJSON作为我如何接收对象。谢谢!
require(['dojo/json', ...], function(JSON, ...) {
    // Assuming `reply` contains the string:
    var replyObj = JSON.parse(reply);
    var results = replyObj.searchResults;
    for (var i = 0, l = results.length; i++) {
        // Do something with results[i]
    }
});