【问题标题】:javascript : parsing multi-level json arrayjavascript:解析多级json数组
【发布时间】:2023-03-28 04:29:01
【问题描述】:

我有一个返回多级数组的 asp.net Web 服务。

使用 json2.js 库解析 json 字符串:

var donnee = JSON.parse(msg.d);

第 1 级解析正常,但第 2 级数组(数据)仍保留为对象数组

?多尼[0]

{...}
color: "#0000CD"
data: [[object Object],[object Object]]
label: "formol"
type: "traitement"

? donnee[0].data

[[object Object],[object Object]]
[0]: {...}
[1]: {...}

? donnee[0].data[0]

{...}
_l: ""
_x: 7
_y: 25

而我需要一个数据数组,例如

?多尼[0]

{...}
label: "traitement formol 2"
type: "traitement"
color: "#0000CD"
data: [7,25,,7,40,formol]

? donnee[0].data

[7,25,,7,40,formol]
[0]: [7,25,]
[1]: [7,40,formol]

? donnee[0].data[0]

[7,25,]
[0]: 7
[1]: 25
[2]: ""

一次解码/解析所有级别的 json 字符串的最佳方法是什么?

最好的问候

【问题讨论】:

  • 它已经被完全“解析”了。这就是 JSON 解析器所做的,除非对象包含本身是 JSON 序列化对象的字符串(显然,这里不是这种情况;如果是,你会看到字符串,而不是对象或对象数组)。
  • 感谢您的快速回复您的意思是我需要先将第二级序列化为字符串,然后将此字符串用作第一级的属性,然后再序列化整个数据?
  • 不,我不是这个意思。 “解析”初始 JSON 字符串的工作是通过对“JSON.parse()”的一次调用完全完成的。您必须承担的任务是遍历生成的数据结构。这个 JSON 是从哪里来的?如果您不知道数据的结构是什么,您将如何使用它?
  • 没问题,这是我的网络服务。这是详细信息: tempuri.org/">[{"_infoType":"traitement1","color":"#0000CD","data ":[{"_l":"","_x":7,"_y":25},{"_l":"format","_x":7,"_y":40}],"label" :"formol","type":"traitement"}]

标签: javascript arrays json parsing


【解决方案1】:

到目前为止,我还没有找到一个简单的解决方案来解码纯数组中的 json 字符串。现在我解析字符串并直接用数组替换对象。

var donnee = JSON.parse(msg.d);

                for (var i in donnee) {

                    if (donnee.hasOwnProperty(i)) {

                        datas[i] = donnee[i];

                        for (var j in donnee[i]) {

                            if (donnee[i].hasOwnProperty(j)) {

                                var lev2 = donnee[i][j];

                                if (typeof lev2 == "object") {
                                    for (var k in donnee[i][j]) {
                                        var lev3 = donnee[i][j][k];
                                        datas[i].data[k] = new Array(lev3.x, lev3.y, lev3.l);
                                    }
                                }
                            }
                        }
                    }
                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多