在节点js中解析json

时间:2018-08-15 12:54:44

标签: json node.js

有人可以帮我解决这个json {“ event”:“ update”,“ data”:“ {\” asks \“:[[\” 55.5 \“,\” 5.3744 \“],[\” 55.74 \“,\” 0.8087 \“]]}},如何解析json 55.5和5.3744中的值。我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的JSON无效,无法解析。

我假设您的data是JSON字符串中的JSON字符串,应该在解析了主要JSON字符串之后对其进行解析。这并不是真正有效,您应该首先考虑不对data值进行字符串化。

您的JSON应该如下所示:

{"event":"update","data":{"asks":[["55.5","5.3744"],["55.74","0.8087"]]}}

或者:

{\"event\":\"update\",\"data\":{\"asks\":[[\"55.5\",\"5.3744\"],[\"55.74\",\"0.8087\"]]}}

在JavaScript中:

const json = '{"event":"update","data":{"asks":[["55.5","5.3744"],["55.74","0.8087"]]}}';
const obj = JSON.parse(json);
const val1 = obj.data.asks[0][0];
const val2 = obj.data.asks[0][1];

如果必须data作为JSON编码的字符串,请对其进行正确编码。如果您想知道在这种情况下JSON字符串的外观,请向后工作:

const dataString = JSON.stringify({
    asks: [
        ["55.5", "5.3744"],
        ["55.74","0.8087"]
    ]
});

const jsonString = JSON.stringify({
    event: "update",
    data: dataString
});

// {\"event\":\"update\",\"data\":\"{\\\"asks\\\":[[\\\"55.5\\\",\\\"5.3744\\\"],[\\\"55.74\\\",\\\"0.8087\\\"]]}\"}

// And back again...

const asks = JSON.parse(
    JSON.parse(jsonString).data
).asks;
const val1 = asks[0][0];
const val2 = asks[0][1];