Модификация ключей JSON с помощью Groovy - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть вывод JSON с сервера, подобный следующему: я пытаюсь очистить значения ключей, чтобы уменьшить их длину и удалить их пробелы.Я могу исправить начальный ключ массива, используя put / remove, но не могу сделать то же самое со значениями ключа массива.

{
"Customer Information": [
     {"Data Table - F0102 [Contacts - Emails]": [{
     "name":"xxxxx",
     "email":"xxxxx"
     }]},
     {"Data Table - F3392 [Contacts - Phone Numbers]":[{
     "phone_desc":"xxxxx",
     "phone_number":"xxxxx"
     }]}
],
"address":"xxxxx",
"city":"xxxxx",
"state":"xxxxx",
"zip":"xxxxx"
}

Я использую следующеекод:

import groovy.json.JsonSlurper;
import groovy.json.JsonBuilder;

def jsonSlurper = new JsonSlurper();
def object = jsonSlurper.parseText'''{JSON FROM ABOVE}'''

// this first line works, and updates to customer_info
object.put("customer_info", object.remove("Customer Information"));

// this line seems to be ignored
object.put("email_info", object.remove("Data Table - F0102 [Contacts - Emails]"));

def jsonOut = new JsonBuilder(object).toPrettyString();
return jsonOut;

1 Ответ

0 голосов
/ 13 декабря 2018

Ваша переменная с именем object немного ранит мои глаза :-) Возможно, вы захотите дать ей более описательное имя.Кроме того, вы можете удалить ; в Groovy-коде.

В любом случае, 'object' - это Map<String, Object>, описывающий ваш json из корня.Итак, object."Customer Information" существует, а object."Data Table - F0102 [Contacts - Emails]" нет.object."Customer Information"[0]."Data Table - F0102 [Contacts - Emails]" делает.

Таким образом, вы можете заменить свою строку object.put("email_info", object.remove("Data Table - F0102 [Contacts - Emails]")) на object.customer_info[0].put("email_info", object.customer_info[0].remove('Data Table - F0102 [Contacts - Emails]')).Но поскольку object."Customer Information" является списком, может быть безопаснее использовать цикл, особенно если количество элементов в нем может различаться в зависимости от клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...