【问题标题】:JSON parse variable resultJSON解析变量结果
【发布时间】:2019-03-15 09:01:11
【问题描述】:

我有一个用 xhr 查询的 JSON。对象(人)包含一个名为“serviceLevel”的键值对,我必须拆分它。

当我将它堆叠在一个变量(服务)中并像这样记录它时:

let main = document.getElementsByTagName('main');

getXHR("GET", './db/orga.json', (success) => {
    format(success)
}, (error) => {
    console.error(error)
});

function format() {
    let people = arguments[0];
    for (let i in people) {
        let person = people[i];
        let services = person.serviceLevel.split(".");
        console.log(services);
		console.log(person.serviceLevel.split("."));

        let idCard = document.createElement('div');
        idCard.id = person.firstName + person.familyName;
        idCard.classList.add('person');
        idCard.innerHTML = "<div class=\"item nom\"><span class=\"prenom\">" + person.firstName + "</span><span class=\"famille\">" + person.familyName + "</span></div>";
        idCard.innerHTML += "<span class=\"job\">" + person.jobTitle_1 + "</span>";
        idCard.innerHTML += "<span class=\"mail\"><a href=\"mailto:" + person.mail + "\">" + person.mail + "</span>";
        idCard.innerHTML += "<span class=\"tel\"><a href=\"tel:" + person.phone_1 + "\">" + person.phone_1 + "</span>";
        idCard.innerHTML += "<span class=\"tel\"><a href=\"tel:" + person.mobile + "\">" + person.mobile + "</span>";

        for (let j in services) {
            let serviceElement = document.getElementById(services[j]);
            if (!serviceElement) {
                let serviceElement = document.createElement('div');
                serviceElement.id = services[j];
                serviceElement.classList.add('n' + j, "service");
                serviceElement.innerHTML = "<span class=\"title\">" + services[j] + "</span>";

                if (j == 0) {
                    if (services[services.length - 1] = j) {
                        serviceElement.appendChild(idCard);
	                    main[0].appendChild(serviceElement);
                    }
                } else {
                    let parent = services[j - 1],
                        parentService = document.getElementById(parent);
                    if (services[services.length - 1] = j) {
                        serviceElement.appendChild(idCard);
                    }
                    parentService.appendChild(serviceElement);
                }
            } else {
                serviceElement.appendChild(idCard);
            }
        }
    }
}
const data = [{
  "Tri": "blablablabla, CSMSI.SAFS, n, XXXX, YYYY",
  "Department": "The best department",
  "serviceLevel": "CSMSI.SAFS",
  "organisationLevel": "blablablabla",
  "rang": "n",
  "familyName": "XXXX",
  "firstName": "YYYY",
  "jobTitle_2": "Directeur",
  "jobTitle_1": "Directeur",
  "phone_1": "nn nn nn nn nn",
  "phone_2": "",
  "mobile": "nn nn nn nn nn",
  "mail": "xxxx.yyyy@zzzz.fr",
  "location": "france"
}];

format(data);

结果不同:

(2) ["CSMSI", "SAFS"]
0: "CSMSI"
1: "SAFS"
length: 2

(2) ["CSMSI", "SAFS"]
0: "CSMSI"
1: "1"
length: 2

我们可以看到,“服务”的内容很好,但是当我扩展树时,第二个键值的值为“1”......这是一个问题。有办法改变吗?

【问题讨论】:

  • 您可能(不小心)稍后在代码中更改它。
  • services初始化后,你要改serviceLevel吗?这是造成这种情况的合理原因
  • 编辑后为您带来更多细节。如您所见,我没有更改 serviceLevel 上的任何内容。它只是 2 个值的显示
  • 能否请您添加示例对象。并且工作 sn-p?
  • 问题中的代码显然没有那个问题。控制台日志的屏幕截图表明您省略了部分实际代码。没有minimal reproducible example,我们无能为力。

标签: javascript json parsing output


【解决方案1】:

当我使用带有“经典”(i = 0; i

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多