Java:生成JSON:尝试命名对象和数组时出现异常

时间:2018-11-13 12:47:02

标签: java json javax.json

我正在尝试生成具有以下结构的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 :(得分:1)

此代码在您的问题中产生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

您不能指定名称,因为对象和数组都是数组中的值。关键是将它们都封装在一个对象中,然后它们都可以(实际上,必须)具有名称。