在javascript中将多个json字符串解析为一个对象

时间:2017-06-08 08:05:28

标签: javascript arrays json

我有一个json输出,它有两个字符串格式,如

   [{"device_id":"9700015","update_time":"2017-01-04 18:30:00","sensor_value":"1287.6"}]
   [{"device_id":"9700016","update_time":"2016-12-31 18:30:00","sensor_value":"1113.8"}]

我想将这些字符串解析为一个对象。我使用了JSON.parse(data)但是它给了我第一个字符串而不是所有字符串。我如何实现这一目标。

我希望输出应该是

   [{"device_id":"9700015","update_time":"2017-01-04 18:30:00","sensor_value":"1287.6"},
   {"device_id":"9700016","update_time":"2016-12-31 18:30:00","sensor_value":"1113.8"}]

2 个答案:

答案 0 :(得分:0)

我想你想要一个包含两个对象的数组,否则,请指定你的预期输出。

如果您无法修改收到的JSON字符串以使其看起来像一个正确的数组,我将替换'] ['对于逗号','所以你可以解析JSON字符串并接收一个里面有两个对象的数组,如下所示:

original = '[{"device_id":"9700015","update_time":"2017-01-04 18:30:00","sensor_value":"1287.6"}][{"device_id":"9700016","update_time":"2016-12-31 18:30:00","sensor_value":"1113.8"}]';
replaced = original.replace('][', ',');
parsed = JSON.parse(replaced);

<强>编辑:

如果你的输入在结束方括号和开头方括号之间包含换行符,你的替换应该是这样的:

replaced = original.replace(']\n[', ',');

第二次修改:

如果您的输入包含两行以上的行,那么没有问题,如果你这样写,你的替换调用将替换每一个匹配:

replaced = original.replace(/\]\[/g, ',');

这是一个正则表达式,用[]表示\]\[表示,因为这些是正则表达式的特殊字符),借助于 g 指定的标志正则表达式的结尾。

答案 1 :(得分:0)

你可以这样做:

ApplicationUser user = await userManager.Users.Include(s => s.Sales).Where(e => e.Email == "t@t.net").FirstOrDefaultAsync();