@UserTrue
Когда искал по форуму, часто встречал ответы этого пользователя. Если найдется минутка, поделитесь опытом. Пока выделил два возможных решения замены curl http. Может есть еще варианты? Какой вариант для вас лучше?
Помогите спарсить объект из массива
-
Прошу прощения если какие-то вещи буду называть не своими именами, я ламер.
Суть:
Я конвертировал джисон в джаваскрипт чтобы спарсить переменную, получилось вот что:
NEW_VARIABLE: {
cards: { },
contacts: {
emails: [ ],
phones: [
{
is_main: true,
phone: {
number: "НУЖНЫЙ МНЕ НОМЕР ТЕЛЕФОНА"
}
}
]
},
favorite_categories: [ ],
favorite_segment: { },
id: "ненужные цифорки",
is_actual: true,
is_email_confirmed: false,
is_favorite_categories_available: false,
is_gold: false,
is_qr_available: false,
notifications: {
ad_push: true,
call_center: true,
email: true,
push: true,
sms: true
},
person: { },
segments: [ ]
},
SAVED_CONTENT: "{"favorite_segment":{},"notifications":{"push":true,"email":true,"sms":true,"ad_push":true,"call_..."
}Там где скобки закрыты, это я плюсы из лога не раскрыл, ибо не нужно.
Вопрос: как это спарсить кодом?
[[то что я выведу в лог]] = [[NEW_VARIABLE]]["вот сюда мне нужна переменная "number""]
-
@kroda said in Помогите спарсить объект из массива:
Прошу прощения если какие-то вещи буду называть не своими именами, я ламер.
Суть:
Я конвертировал джисон в джаваскрипт чтобы спарсить переменную, получилось вот что:
NEW_VARIABLE: {
cards: { },
contacts: {
emails: [ ],
phones: [
{
is_main: true,
phone: {
number: "НУЖНЫЙ МНЕ НОМЕР ТЕЛЕФОНА"
}
}
]
},
favorite_categories: [ ],
favorite_segment: { },
id: "ненужные цифорки",
is_actual: true,
is_email_confirmed: false,
is_favorite_categories_available: false,
is_gold: false,
is_qr_available: false,
notifications: {
ad_push: true,
call_center: true,
email: true,
push: true,
sms: true
},
person: { },
segments: [ ]
},
SAVED_CONTENT: "{"favorite_segment":{},"notifications":{"push":true,"email":true,"sms":true,"ad_push":true,"call_..."
}Там где скобки закрыты, это я плюсы из лога не раскрыл, ибо не нужно.
Вопрос: как это спарсить кодом?
[[то что я выведу в лог]] = [[NEW_VARIABLE]]["вот сюда мне нужна переменная "number""]
Выложите нормально полный код json строки, жалательно в теге code

а не просто текстом@ls5stream said in Помогите спарсить объект из массива:
В выполнить код [[Имя переменной которая будет содержать результат]] = JSON.parse([[Переменная в которой номер]]).NEW_VARIABLE.phone.number
если свойство phone находится в массиве phones, то нужно указывать индекс элемента массива
-
@fox ```
{ NEW_VARIABLE: { cards: { list: [ "много цифр" ], main: "много цифр" }, contacts: { emails: [ ], phones: [ { is_main: true, phone: { number: "как спарсить это" } } ] }, favorite_categories: [ ], favorite_segment: { }, id: "много цифр", is_actual: true, is_email_confirmed: false, is_favorite_categories_available: false, is_gold: false, is_qr_available: false, notifications: { ad_push: true, call_center: true, email: true, push: true, sms: true }, person: { birthday: "1991-12-11", children: 0, city_name: "", first_name: "Костя", last_name: "Лебедев", sex: "man" }, segments: [ ] }, -
@kroda said in Помогите спарсить объект из массива:
@fox ```
{ NEW_VARIABLE: { cards: { list: [ "много цифр" ], main: "много цифр" }, contacts: { emails: [ ], phones: [ { is_main: true, phone: { number: "как спарсить это" } } ] }, favorite_categories: [ ], favorite_segment: { }, id: "много цифр", is_actual: true, is_email_confirmed: false, is_favorite_categories_available: false, is_gold: false, is_qr_available: false, notifications: { ad_push: true, call_center: true, email: true, push: true, sms: true }, person: { birthday: "1991-12-11", children: 0, city_name: "", first_name: "Костя", last_name: "Лебедев", sex: "man" }, segments: [ ] },Весь, это означает весь, чтобы можно было загрузить на https://jsoneditoronline.org/ и удобно увидеть дерево необходимых свойств
-
@fox said in Помогите спарсить объект из массива:
Весь, это означает весь, чтобы можно было загрузить на https://jsoneditoronline.org/ и удобно увидеть дерево необходимых свойств
Это весь запрос джисона который конвертится в джаваскрипт.
Нужен джисон?
Не проблема:
{"favorite_segment":{},"notifications":{"push":true,"email":true,"sms":true,"ad_push":true,"call_center":true},"id":"1111111111111111111111111111111111111111111111","favorite_categories":[],"is_email_confirmed":false,"is_actual":true,"is_qr_available":false,"is_favorite_categories_available":false,"contacts":{"phones":[{"phone":{"number":"+79112223332"},"is_main":true}],"emails":[]},"segments":[],"person":{"first_name":"Костя","last_name":"Лебедев","sex":"man","birthday":"1991-12-11","city_name":"","children":0},"is_gold":false,"cards":{"main":"1111111111111111111111111111111111111111111111","list":["1111111111111111111111111111111111111111111111"]}} -
@kroda said in Помогите спарсить объект из массива:
@fox said in Помогите спарсить объект из массива:
Весь, это означает весь, чтобы можно было загрузить на https://jsoneditoronline.org/ и удобно увидеть дерево необходимых свойств
Это весь запрос джисона который конвертится в джаваскрипт.
Нужен джисон?
Не проблема:
{"favorite_segment":{},"notifications":{"push":true,"email":true,"sms":true,"ad_push":true,"call_center":true},"id":"1111111111111111111111111111111111111111111111","favorite_categories":[],"is_email_confirmed":false,"is_actual":true,"is_qr_available":false,"is_favorite_categories_available":false,"contacts":{"phones":[{"phone":{"number":"+79112223332"},"is_main":true}],"emails":[]},"segments":[],"person":{"first_name":"Костя","last_name":"Лебедев","sex":"man","birthday":"1991-12-11","city_name":"","children":0},"is_gold":false,"cards":{"main":"1111111111111111111111111111111111111111111111","list":["1111111111111111111111111111111111111111111111"]}}Надеюсь это не кардер..
Смотрите, если вам нужен номер телефона +79112223332, и в массиве нужен только первый элемент, то подойдёт такой код:
[[NUMBER]] = JSON.parse([[VARIABLE]]).contacts.phones[0].phone.numberесли последний элемент, то :
var json = JSON.parse([[VARIABLE]]).contacts.phones [[NUMBER]] = json[json.length-1].phone.numberесли все, то:
[[NUMBERS]] = JSON.parse([[VARIABLE]]).contacts.phones -
@fox said in Помогите спарсить объект из массива:
Нет, ничего противозаконногоВсе получилось, огромное спасибо, но хотелось бы до конца разобраться:
- Что такое ноль в квадратных скобках? В редакторе я виже, что после пхонс надо раскрыть объект, но почему тогда мы не пишем его так же как и все остальное через точку?
[[NUMBER]] = JSON.parse([[VARIABLE]]).contacts.phones[0].phone.number2)Почему здесь в начале вар джисон а не имя переменной? или это для примера написано?
var json = JSON.parse([[VARIABLE]]).contacts.phones [[NUMBER]] = json[json.length-1].phone.numberИ сраузе же хочу задать последний вопрос, тоже по парсу джисона, в ответе сервера очень много раз повторяются объекты, но ключи разные:
{ "count": 19877, "info": [ { "created": "2018-12-09 20:24:04", "typephone": "iphone7", "phone": "+79111111111", "cost": "0", "accessToken": "111111111111111111111", "link": "83dcd274f5f476f23379881e68545477" }, { "created": "2019-05-22 13:28:04", "typephone": "iphone6", "phone": null, "cost": "0", "accessToken": "22222222222222222222", "link": "ecde8b395c7181be307cede64694d722" } ] }Как спарсить строку с токеном "222222222222222222222" и например сразу же после нее строку линк или до нее кост, пхон, таймпхон, креэйтед
[[NUMBER]] = JSON.parse([[VARIABLE]]).info.accessToken (как написать ключ?) и все захватить если имя объекта для все одинаковое "info"
-
@kroda said in Помогите спарсить объект из массива:
@fox said in Помогите спарсить объект из массива:
Нет, ничего противозаконногоВсе получилось, огромное спасибо, но хотелось бы до конца разобраться:
- Что такое ноль в квадратных скобках? В редакторе я виже, что после пхонс надо раскрыть объект, но почему тогда мы не пишем его так же как и все остальное через точку?
[[NUMBER]] = JSON.parse([[VARIABLE]]).contacts.phones[0].phone.numberСвойство phones является массивом, через квадратные скобки я могу указать сразу индекс элемента. Так как индекс элементов массива начинается с нуля, то я просто взял первый элемент.
2)Почему здесь в начале вар джисон а не имя переменной? или это для примера написано?
var json = JSON.parse([[VARIABLE]]).contacts.phones [[NUMBER]] = json[json.length-1].phone.numberДа, по большей части здесь всё для примера
:D, но согласитесь, вот такой код совсем непонятный:[[NUMBER]] = JSON.parse([[VARIABLE]]).contacts.phones[JSON.parse([[VARIABLE]]).contacts.phones.length-1].phone.numberИ сраузе же хочу задать последний вопрос, тоже по парсу джисона, в ответе сервера очень много раз повторяются объекты, но ключи разные:
{ "count": 19877, "info": [ { "created": "2018-12-09 20:24:04", "typephone": "iphone7", "phone": "+79111111111", "cost": "0", "accessToken": "111111111111111111111", "link": "83dcd274f5f476f23379881e68545477" }, { "created": "2019-05-22 13:28:04", "typephone": "iphone6", "phone": null, "cost": "0", "accessToken": "22222222222222222222", "link": "ecde8b395c7181be307cede64694d722" } ] }Как спарсить строку с токеном "222222222222222222222" и например сразу же после нее строку линк или до нее кост, пхон, таймпхон, креэйтед
[[NUMBER]] = JSON.parse([[VARIABLE]]).info.accessToken (как написать ключ?) и все захватить если имя объекта для все одинаковое "info"
Квадратные скобки свойства info говорят о том, что это массив (читай список), указать индекс элемента массива можно через квадратные скобки:
[[ACCESSTOKEN]] = JSON.parse([[VARIABLE]]).info[1].accessToken [[LINK]] = JSON.parse([[VARIABLE]]).info[1].link [[COST]] = JSON.parse([[VARIABLE]]).info[1].costили так:
var json = JSON.parse([[VARIABLE]]).info[1] [[ACCESSTOKEN]] = json.accessToken [[LINK]] = json.link [[COST]] = json.costСпарсить все необходимые значения из массива можно через цикл