首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript Json Parser

Javascript Json Parser
EN

Stack Overflow用户
提问于 2014-01-09 22:55:33
回答 2查看 127关注 0票数 0

我试图只使用javascript编写一个JSON解析器。我只想使用javascript的原因是,我希望解析Meteor中服务器端的API返回的结果。然而,我在解析它时遇到了困难。下面是返回的JSON:

代码语言:javascript
复制
{
   "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”键:值(即array["responseID"]="R_e36yuRbnMmh38dD)。

代码语言:javascript
复制
  "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 "
   }

我想将结果集保存在mongoDb中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-09 23:11:48

您可以使用NodeJS JSON.parse()函数,但是如果我理解,您希望更多地使用对象中的键创建一个对象。

这是代码,如果您想要这样做的话:

代码语言:javascript
复制
var originalObject;
var resultArray;
for (var key in originalObject) {
   if(originalObject.hasOwnProperty(key )){
     var obj = originalObject[key];
     obj.responseID = key;
     resultArray.push(obj);
   }
}

但你的问题有点让人困惑。对于mongoDB,我建议使用nodejs本地驱动程序

票数 1
EN

Stack Overflow用户

发布于 2014-01-09 23:23:47

我认为您不是在讨论JSON解析器--您似乎想要转换一些已经解析过的对象,特别是向每个对象添加一个新属性。尽管您的示例没有显示这一点,而且也没有array,所以这是纯粹的猜测。

代码语言:javascript
复制
var responses_map = JSON.parse('{"R_5N4205x1hhF6pGZ": { "ResponseSet": ...');

可以使用Object.keys获取对象成员的字符串。

代码语言:javascript
复制
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上运行,则需要使用for response_id in response_map循环而不是Object.keys。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21032923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档