Я должен перебирать объект "java-объект" price_detail. Пожалуйста, научите меня, как восстановить этот тип объекта. Я зациклился на многих структурах, но не на этом типе. Я не мог найти пример для такого типа структуры данных, который ищет "Итерацию через вложенный массив объектов json",
Код, который я использую:
$.each(json.data['price_detail'], function (i, item) {
console.log('name='+ i + ' value=' +item);
}
output:
name=price value=14.7,14.7,14.7
name=type value=coupon,coupon,coupon
name=savings value=,75%,35%
name=pharmacy value=Walmart,Kmart,Costco
Данные имеют следующую структуру.
{"errors": [],
"data": {"form": "tablet",
"price_detail":
{"price": [14.7, 14.7, 14.7],
"type": ["coupon", "coupon", "coupon"],
"savings": [null, "75%", "35%"],
"pharmacy": ["Walmart", "Kmart", "Costco"]},
"brand": ["lortab", "maxidone", "vicodin", "norco", "xodol", "hycet"],
"dosage": "5mg/325mg", "generic": ["hydrocodone/acetaminophen", "lorcet", "zolvit"],
"prices": [14.7, 14.7, 14.7],
"quantity": 60,
"display": "Lortab, Maxidone, Vicodin, Norco, Xodol, Hycet (hydrocodone / acetaminophen, lorcet, zolvit)",
"manufacturer": "generic"},
"success": true}
Я хотел бы использовать объект, используя аптеку, тип, экономию и цены; такие как:
{
["Walmart", "coupon", NULL, 14.7],
["Kmart", "coupon", "75%", 14.7],
["Costco","coupon", "35%", 14.7]
}
Спасибо.
EDIT: Я изменил название. После очистки сети я обнаружил, что мне нужно транспонировать результат json. Простите мое отсутствие терминологии.
Я попытался использовать эту функцию, которую я нашел, чтобы транспонировать массив
function transpose(a) {
return Object.keys(a[0]).map(function (c) {
return a.map(function (r) {
return r[c];
});
});
}
создать тестовые данные, запустить его через функцию
var testData = [ [14.7, 14.7, 14.7],
["coupon", "coupon", "coupon"],
[null, "75%", "35%"],
["Walmart", "Kmart", "Costco"]
]
var result = transpose(testData);
Это дает мне желаемые результаты.
[14.7, "coupon", null, "Walmart"],
[14.7, "coupon", "75%", "Kmart"],
[14.7, "coupon", "35%", "Costco"]
Теперь, когда я запускаю свой объект "price_detail" через него
transpose(json.data['price_detail']);
Я застрял в этой ошибке: Uncaught TypeError: Невозможно преобразовать неопределенные или null в объект
Ваш заявленный желаемый результат недействителен JSON, но вот пример, который создает формат, который, как я думаю, может быть вам полезен. Если это не совсем то, что вы хотели бы, теперь вы сможете увидеть, как его модифицировать, чтобы удовлетворить вас.
var json = {
"errors": [],
"data": {
"form": "tablet",
"price_detail": {
"price": [14.7, 14.7, 14.7],
"type": ["coupon", "coupon", "coupon"],
"savings": [null, "75%", "35%"],
"pharmacy": ["Walmart", "Kmart", "Costco"]
},
"brand": ["lortab", "maxidone", "vicodin", "norco", "xodol", "hycet"],
"dosage": "5mg/325mg",
"generic": ["hydrocodone/acetaminophen", "lorcet", "zolvit"],
"prices": [14.7, 14.7, 14.7],
"quantity": 60,
"display": "Lortab, Maxidone, Vicodin, Norco, Xodol, Hycet (hydrocodone / acetaminophen, lorcet, zolvit)",
"manufacturer": "generic"
},
"success": true
};
var result = [];
for (var i = 0; i < json.data.price_detail.pharmacy.length; i++) {
result.push({
"pharmacy": json.data.price_detail.pharmacy[i],
"type": json.data.price_detail.type[i],
"savings": json.data.price_detail.savings[i],
"price": json.data.price_detail.price[i]
});
}
console.log(JSON.stringify(result));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>