Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 Json解析器_Javascript_Json_Mongodb_Meteor - Fatal编程技术网

Javascript Json解析器

Javascript Json解析器,javascript,json,mongodb,meteor,Javascript,Json,Mongodb,Meteor,我正在尝试只使用javascript编写JSON解析器。我只想使用javascript的原因是我想解析Meteor服务器端API返回的结果。但是,我在解析它时遇到了困难。以下是返回的JSON: { "R_5N4205x1hhF6pGZ":{ "ResponseSet":"Default Response Set", "Name":"Anonymous", "ExternalDataReference":"", "EmailAddress":"

我正在尝试只使用javascript编写JSON解析器。我只想使用javascript的原因是我想解析Meteor服务器端API返回的结果。但是,我在解析它时遇到了困难。以下是返回的JSON:

{
   "R_5N4205x1hhF6pGZ":{
      "ResponseSet":"Default Response Set",
      "Name":"Anonymous",
      "ExternalDataReference":"",
      "EmailAddress":"",
      "Status":"16",
      "StartDate":"2014-01-09 11:19:51",
      "EndDate":"2014-01-09 11:19:56",
      "Finished":"1",
      "Q1":"Hello "
   },
   "R_7mqYPn4rZfNtVif":{
      "ResponseSet":"Default Response Set",
      "Name":"Anonymous",
      "ExternalDataReference":"",
      "EmailAddress":"",
      "Status":"16",
      "StartDate":"2014-01-09 11:21:58",
      "EndDate":"2014-01-09 11:22:05",
      "Finished":"1",
      "Q1":"Name identifier"
   },
   "R_bHs2h06HSQ1h2Qh":{
      "ResponseSet":"Default Response Set",
      "Name":"Anonymous",
      "ExternalDataReference":"",
      "EmailAddress":"",
      "Status":"16",
      "StartDate":"2014-01-09 11:28:24",
      "EndDate":"2014-01-09 11:28:30",
      "Finished":"1",
      "Q1":"Test"
   },
   "R_20rlmxxgGkYnWWF":{
      "ResponseSet":"Default Response Set",
      "Name":"Some, Name",
      "ExternalDataReference":"",
      "EmailAddress":"",
      "Status":"0",
      "StartDate":"2014-01-09 12:21:15",
      "EndDate":"2014-01-09 12:21:27",
      "Finished":"1",
      "Q1":"hjjhhjhj"
   },
   "R_e36yuRbnMmh38dD":{
      "ResponseSet":"Default Response Set",
      "Name":"Anonymous",
      "ExternalDataReference":"",
      "EmailAddress":"",
      "IPAddress":"161.185.153.4",
      "Status":"0",
      "StartDate":"2014-01-09 12:23:04",
      "EndDate":"2014-01-09 12:23:11",
      "Finished":"1",
      "Q1":"hello world "
   }
}
我想用对象父键将每个响应对象保存为键“responseID”:value(即
数组[“responseID”]=“R_e36yuRbnMmh38dD
”)


我想在mongoDb中保存结果集。

您可以使用nodejson.parse()函数,但如果我了解您需要更多,请使用对象中的键创建一个对象

以下是代码,如果您想这样做:

var originalObject;
var resultArray;
for (var key in originalObject) {
   if(originalObject.hasOwnProperty(key )){
     var obj = originalObject[key];
     obj.responseID = key;
     resultArray.push(obj);
   }
}
但你的问题有点让人困惑。对于mongoDB,我建议使用

我不认为您谈论的是JSON解析器——您似乎在说您想要转换一些已经解析的对象,特别是为每个对象添加一个新属性。虽然您的示例没有显示这一点,并且没有
数组
,但这纯粹是猜测

var responses_map = JSON.parse('{"R_5N4205x1hhF6pGZ": { "ResponseSet": ...');
您可以使用
object.keys
获取对象成员的字符串:

Object.keys(responses_map).forEach(function(response_id) {
    responses_map[response_id].responseID = response_id;
});

// now responses_map.R_5N4205x1hhF6pGZ.responseID is "R_5N4205x1hhF6pGZ"

(注意:假设使用现代JavaScript-如果您的代码也需要在IE8上运行,您需要在response\u map循环中使用
for response\u id,而不是
Object.keys

那么您使用的是Node.js,它有一个内置的JSON解析器?我不熟悉meteor和Node.js,任何建议都将不胜感激。到目前为止,我只在线搜索json javascript解析器。我可以在客户端使用jquery,但我需要能够在服务器端使用jquery。如何通过每次迭代访问内部的responseID?明白了!非常感谢。for(resultArray中的var x){console.log(resultArray[x].Name);}我正试图使用:for(响应中的var-key_-map){var-obj=response_-map[key];console.log(obj.responseId);}循环遍历每个对象中存储的所有值,但它返回未定义的值。如何访问responseId值?
obj.responseId
将是未定义的,因为在您编写它之前,它不会出现在对象中。您可能需要执行
obj.responseId=key
。注意:如果您在
循环中为…使用
,您还应该像Yoann的回答中那样使用
hasOwnProperty
,以避免来自
对象的不必要继承问题。
Object.keys(responses_map).forEach(function(response_id) {
    responses_map[response_id].responseID = response_id;
});

// now responses_map.R_5N4205x1hhF6pGZ.responseID is "R_5N4205x1hhF6pGZ"