Помогите выдернуть параметр из JSON



  • Приветствую всех!

    Имеется следующий JSON:

    {
       auth_error: "0"
       errors: [
    
       ]
       history: {
           958169181: {
               comment: "бла-бла-бла"
               creditedAmount: "100.00"
               creditedCurrency: "RUB"
               date: "2020-02-24 15:55:59"
               from: "@anonim"
               id: "958169181"
               protect: "N"
               protectDay: ""
               status: "success"
               to: "P1020000000"
               type: "transfer"
           }
       }
       params: {
           count: 1
           from: "2020-01-24 16:13:54"
           sort: "desc"
           to: "2020-02-24 16:13:54"
           type: "incoming"
       }
    }
    

    Как из него выдернуть параметр "comment", если набор цифр "958169181" может быть произвольным (но обязательно цифровой)? Предполагаю, что этот "цифровой набор" надо заменить регуляркой, но как всё это подружить в одном выражении даже не представляю. Как обойти это без использования JS тоже нет идей.
    Мои познания в js и регулярках крайне минимальны. Поэтому без помощи сообщества мне не обойтись (.

    Help me!!!



  • @NeVolshebnik Во первых у вас невалид JSON Вы сами его писали? или это от сервера так?
    Если это от сервера, то сначала превратите это в JSON. Это объект И хоть он и выглядит как формат JSON для вас он им не является. И даже как объект это неверно, запятые где?)

    JSON_not_JSON.xml
    upd Извините он ноду тянул, я убрал



  • @NeVolshebnik, выполнить код

    [[COMMENT]] = [[JSON]].history[Object.keys([[JSON]].history)[0]].comment
    

    [[COMMENT]] - переменная в которую будет помещён комментарий
    [[JSON]] - переменная содержащая JSON



  • @f0cus
    Ответ от сервера вот в таком виде в переменную сохраняется. Как наглядно записать - не шарю.

    {"auth_error":"0","errors":[],"params":{"from":"2020-01-24 18:51:34","to":"2020-02-24 18:51:34","sort":"desc","count":1,"type":"incoming"},"history":{"958169181":{"id":"958169181","date":"2020-02-24 15:55:59","type":"transfer","status":"success","from":"@anonim","to":"P1020000000","creditedAmount":"100.00","creditedCurrency":"RUB","protect":"N","protectDay":"","comment":"бла_бла_бла"}}}
    

    Затем выполняю код

    [[JSON_VARIABLE]] = JSON.parse([[SAVED_CONTENT]])
    

    После него в переменную сохраняется код как в первом сообщении.

    Пока набирал сообщение, попробовал подставить код от @GhostZ и ... всё получилось.

    @GhostZ спасибо!



  • @NeVolshebnik Вот это правильный ответ.Это не JSON формат это Объекты Если вы такое видите то знайте.
    upd

    [[JSON_VARIABLE]] = JSON.parse([[SAVED_CONTENT]])
    

    А это зачем? И что это Если вы хотите превратить это в строку JSON то нужно писать

    [[JSON_VARIABLE]] = JSON.stringify([[SAVED_CONTENT]]) 
    


  • @f0cus
    Я вершков нахватался и пока с json форматом туго идёт продвижение.
    За попытку разъяснения - спасибо! Буду разбираться понемногу ).



  • @NeVolshebnik Что бы такого не было в скрипте скинутом мной еспользуется модуль JSON Если его установите там есть экшен проверка на валидность JSON переменной. Результат будет булевый. Если не знаете то можете использовать его. Как минимум отпадет часть проблем пока не начнете понимать разницу.
    upd Как его можно применить есть в моем скрипте. Он там проверят на валидность и потом преобразовывает. Т.к. входящая не подходит. Этот модуль делвет все то что у вас в коде.


Log in to reply
 

  • 2
  • 4
  • 4
  • 9
  • 21
  • 9
  • 1
  • 2