javascript - 解析 Array 对象下的 JSON

标签 javascript json

我有一个简单的 JSON 字符串,封装在一个使用 Java 中的 JSONArray 和 JSONObject 形式的 org.json 创建的数组中。

var outObjA = [{"LoginTime":"2018-02-14 08:51:48.0","User":"f00dl3","RemoteIP":"127.0.0.1"}];

我正在尝试用 JavaScript 解析它。首先,我使用 `i"计数器遍历封装数据的数组:

for(var i = 0; i < outObjA.length; i++) {
   var jsonData = JSON.parse(outObjA[i]);
   console.log(jsonData);
}

当我尝试解析 JSON 时,出现错误:

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

我在其中构建了一个 try/catch,它返回了一个对象:

for (var i = 0; i < outObjA.length; i++) {
  var jsonData = null;
  try {
    jsonData = JSON.parse(outObjA[i]);
  } catch (e) {
    jsonData = outObjA[i];
  }
  console.log(jsonData);
}

返回:

{
  "LoginTime": "2018-02-14 08:51:48.0",
  "User": "f00dl3",
  "RemoteIP": "127.0.0.1"
}

这是有效的 JSON,不是吗?

最佳答案

那不是 JSON 字符串,而是 JavaScript 数组。为了使它成为一个 JSON 字符串,用撇号将它包围起来,然后你可以解析它,最后循环遍历它:

var outObjA = '[{"LoginTime":"2018-02-14 08:51:48.0","User":"f00dl3","RemoteIP":"127.0.0.1"}]';

var outObjA = JSON.parse(outObjA);
for (var i = 0; i < outObjA.length; i++) {
  var jsonData = outObjA[i];
  console.log(jsonData);
}

或者更好的是,您可以直接循环遍历它而无需解析:

var outObjA = [{"LoginTime": "2018-02-14 08:51:48.0", "User": "f00dl3", "RemoteIP": "127.0.0.1"}];

for (var i = 0; i < outObjA.length; i++) {
  var jsonData = outObjA[i];
  console.log(jsonData);
}

关于javascript - 解析 Array 对象下的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790960/

相关文章:

javascript - 在 insertRule javascript 语句中格式化字符串

json - 如何以编程方式创建给定(json)模式的 OrientDB 数据库?

javascript - 如何查询服务器上的json文件

json - 使用 ID 作为索引将数组转换为 JSON (MongoDB/Express)

将 html 转换为 bbcode 的 Javascript,用于带有链接的图像

javascript - 服务器响应问题

javascript - 语法 !function() { ... } 是什么意思?

javascript - JS 中的 fetch 未从 php 中的 json_encode 接收到适当的 JSON 格式

php - Steam 网络 API : How to get the tags for items in Steam Inventory

ios - 当我的自定义 TableView 单元格中的用户选项卡调用按钮时,如何从 json 获取号码并在拨号盘中显示该号码