Как я могу получить доступ к подэлементам в документе JSON - PullRequest
0 голосов
/ 16 апреля 2019

Вот моя проблема, я пытаюсь проанализировать объект, который имеет несколько объектов, но они не в форме объектов в массиве. Мои данные выглядят так

{ "Jurisdiction": {
         "Mwd Water Stdby Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$10"
        },
         "Mosq/Fire Ant Assmt": {
             "Tax Type": "Actual",
             "Tax Amount": "$7"
        },
         "Vector Control Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$2"
        },
         "Total Of Special Assessments": {
             "Tax Type": "Actual",
             "Tax Amount": "$19"
        }
    }

и я на самом деле пытаюсь преобразовать это в массив obj, как

{ "Jurisdiction":[{
         "Tax Name" : "Mwd Water Stdby Chg",
         "Tax Type": "Actual",
          "Tax Amount": "$10"
        }...]

Я безуспешно пытался получить доступ к типу налога и т. Д. Под элементами.

var obj = JSON.parse(result);
var keys = Object.keys(obj.Jurisdiction);

for (var i = 0; i < keys.length; i++) {


  console.log(keys[i]["Tax Type"])
  console.log([keys[i]]["Tax Type"])
}

все возвраты неопределены

Ответы [ 3 ]

1 голос
/ 16 апреля 2019

Используйте map с Object.entries:

const obj = {
  "Jurisdiction": {
    "Mwd Water Stdby Chg": {
      "Tax Type": "Actual",
      "Tax Amount": "$10"
    },
    "Mosq/Fire Ant Assmt": {
      "Tax Type": "Actual",
      "Tax Amount": "$7"
    },
    "Vector Control Chg": {
      "Tax Type": "Actual",
      "Tax Amount": "$2"
    },
    "Total Of Special Assessments": {
      "Tax Type": "Actual",
      "Tax Amount": "$19"
    }
  }
};

obj.Jurisdiction = Object.entries(obj.Jurisdiction).map(([k, v]) => ({ "Tax Name": k, ...v }));

console.log(obj);
.as-console-wrapper { max-height: 100% !important; top: auto; }
1 голос
/ 16 апреля 2019

Вы можете использовать Object.entires() и map()

const obj = { "Jurisdiction": {
         "Mwd Water Stdby Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$10"
        },
         "Mosq/Fire Ant Assmt": {
             "Tax Type": "Actual",
             "Tax Amount": "$7"
        },
         "Vector Control Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$2"
        },
         "Total Of Special Assessments": {
             "Tax Type": "Actual",
             "Tax Amount": "$19"
        }
    }
}

let res = Object.entries(obj.Jurisdiction).map(x => ({'Tax Name':x[0],...x[1]}));
obj.Jurisdiction = res;

console.log(obj)
0 голосов
/ 16 апреля 2019

Вместо этого вы должны использовать цикл for:

var obj = { "Jurisdiction": {
         "Mwd Water Stdby Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$10"
        },
         "Mosq/Fire Ant Assmt": {
             "Tax Type": "Actual",
             "Tax Amount": "$7"
        },
         "Vector Control Chg": {
             "Tax Type": "Actual",
             "Tax Amount": "$2"
        },
         "Total Of Special Assessments": {
             "Tax Type": "Actual",
             "Tax Amount": "$19"
        }
      }
  }
var jur = obj.Jurisdiction, j;
for(var i in jur){
   j = jur[i];
   console.log(i);
   console.log(j['Tax Type']);
   console.log(j['Tax Amount']);
   console.log('-----------------------------');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...