Добавление списка к объекту карты в Groovy - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно добавить список к объекту карты в Groovy.Тем не менее, это не удается, когда я выполняю этот оператор docList.add (Doc).Если я создаю класс и добавляю объект класса в список, он работает, но JsonBuilder портит порядок полей при использовании объектов класса, поэтому вместо этого я пытаюсь использовать список карт.Есть идеи?

Map Doc = [
    docName : "",
    docType : ""
];

Map Name = [
    firstName : "",
    lastName : "",
    middleName : "",
    documents : docList
];

Map<String,Object> docList = []
Doc.docName= "test"
Doc.docType= "docx"
docList.add(Doc);

println new JsonBuilder(Name).toPrettyString();

Я планирую создать следующий документ JSON:

{
    "firstName" : "",
    "lastName" : "",
    "middleName" : "",
    "documents": [
        {
            "docName" : "test"
            "docType" : "docx"
        }
    ]
}

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Ваш список документов Map, и вы относитесь к List

List docList = []

Doc.docName= "test"
Doc.docType= "docx"
docList.add(Doc);

Должно работать

0 голосов
/ 15 октября 2018

Ваш код выдает

Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[]' with class 'java.util.ArrayList' to class 'java.util.Map' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.util.Map()

, потому что вы присвоили пустой список карте в этой строке:

Map<String,Object> docList = []

Замените его на List и реорганизуйте код (такdocList инициализируется до name) и будет работать:

import groovy.json.JsonBuilder

Map doc = [
        docName: "",
        docType: ""
]

List docList = []
doc.docName = "test"
doc.docType = "docx"
docList.add(doc)

Map name = [
        firstName : "",
        lastName  : "",
        middleName: "",
        documents : docList
]

println new JsonBuilder(name).toPrettyString()

Выход:

{
    "firstName": "",
    "lastName": "",
    "middleName": "",
    "documents": [
        {
            "docName": "test",
            "docType": "docx"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...