Java: Генерация JSON: Получение исключения при попытке назвать объект и массив - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь сгенерировать JSON со структурой, подобной этой:

 "rows": [
    {
        "object": {
            "id": "1"
        },
        "values": [
            "111",
            "reg text",
            "11"
        ]
    }
]

и вот код:

.writeStartObject()        
.writeStartArray("rows")
    .writeStartObject()       //here i can`t name the object
    .write("id", "'1'@1000")
    .writeEnd()
        .writeStartArray()    //here i can`t name the array
            .write("fax")
            .write("646 555-4567")
        .writeEnd()
.writeEnd()
.writeEnd();

Когда я пытался добавить заголовки объекта и массива в скобках, я получил исключение «Недопустимый метод во время генерации JSON, недопустимый в текущем контексте IN_ARRAY». Как сгенерировать JSON как у меня?

1 Ответ

0 голосов
/ 13 ноября 2018

Этот код создает вывод JSON в вашем вопросе:

generator.writeStartObject()
    .writeStartArray("rows")
        .writeStartObject()
            .writeStartObject("object")
                .write("id", "1")
            .writeEnd()
            .writeStartArray("values")
                .write("111")
                .write("reg text")
                .write("11")
            .writeEnd()
        .writeEnd()
    .writeEnd()
.writeEnd();

Первый writeStartObject начинает анонимный объект, который находится внутри массива rows.Второй writeStartObject производит:

"object": {
    [...]
}

Что касается ваших комментариев:

.writeStartObject()       //here i can`t name the object

[...]

    .writeStartArray()    //here i can`t name the array

Вы не можете указать имя, потому что и объект, и массив являются значениями в массиве.Ключ заключается в том, чтобы заключить их обоих в объект, и тогда оба они могут (на самом деле должен ) иметь имя.

...