#json #groovy
Вопрос:
Я только вчера начал изучать Groovy, так что у меня все еще мало знаний об этом. Я хочу сначала удалить часть JSON, а затем добавить что-то в начало оставшегося JSON.
Вот как выглядит текущий JSON:
{
"Association_1": {
"Price": 71.4,
"Branch": "600001",
"Item": "BB101",
"UOM": "CS"
},
"Association_2": {
"Price": 3.88,
"Branch": "600001",
"Item": "BB101",
"UOM": "LB"
},
"Association_3": {
"Price": 17.85,
"Branch": "600001",
"Item": "BB101",
"UOM": "PC"
}
}
Это желаемый JSON:
{
"Pricing": [
{
"Price": 71.4,
"Branch": "600001",
"Item": "BB101",
"UOM": "CS"
},
{
"Price": 3.88,
"Branch": "600001",
"Item": "BB101",
"UOM": "LB"
},
{
"Price": 17.85,
"Branch": "600001",
"Item": "BB101",
"UOM": "PC"
}
]
}
Комментарии:
1. Что вы пробовали до сих пор? Где ты застрял?
2. Я даже не знаю, с чего начать. До вчерашнего дня я даже не знал о существовании Groovy. Мне просто трудно об этом думать. Я читал о некоторых примерах, но я застрял на том, с чего начать.
Ответ №1:
Предполагая, что ваш json находится в такой строке:
def json = '''{
"Association_1": {
"Price": 71.4,
"Branch": "600001",
"Item": "BB101",
"UOM": "CS"
},
"Association_2": {
"Price": 3.88,
"Branch": "600001",
"Item": "BB101",
"UOM": "LB"
},
"Association_3": {
"Price": 17.85,
"Branch": "600001",
"Item": "BB101",
"UOM": "PC"
}
}'''
Затем вы можете импортировать классы передачи Json и проанализировать json на карте
import groovy.json.*
def parsed = new JsonSlurper().parseText(json)
Нам нужны значения этой карты, нас не волнуют ключи, поэтому давайте соберем их в список
def values = parsed*.value
И наша новая форма объекта имеет ключевое «Ценообразование», а затем эти значения мы просто схватили
def reshaped = [Pricing: values]
Вот и все! Теперь нам просто нужно преобразовать его обратно в красивую строку Json:
def newJson = JsonOutput.prettyPrint(JsonOutput.toJson(shaped))
И если мы распечатаем это:
println newJson
Мы получаем
{
"Pricing": [
{
"Price": 71.4,
"Branch": "600001",
"Item": "BB101",
"UOM": "CS"
},
{
"Price": 3.88,
"Branch": "600001",
"Item": "BB101",
"UOM": "LB"
},
{
"Price": 17.85,
"Branch": "600001",
"Item": "BB101",
"UOM": "PC"
}
]
}