java - 使用 gson 时出现错误而不是 JSON 数组

标签 java javascript json gson

我的 json 字符串是:

{
    "sigTemplateId": 1,
    "name": "Test Ticket Template",
    "groups": "[{\"sigTemplateId\": 1, \"sigTemplateGroupId\": 1, \"name\": \"Group 1\", \"ordinal\": 1}]"
}

这从我的 jsp 发送到 servlet。 Servlet 代码是:

Gson gson = new Gson();

if (jsonData != null) {
    Type objType = new TypeToken<SigTemplateObj>() {}.getType();
    SigTemplateObj sigTemplateToSave = gson.fromJson(jsonData, objType);
    //SigTemplateObj sigTemplateToSave = gson.fromJson(jsonData, SigTemplateObj.class);
}

我得到了:java.lang.IllegalStateException:这不是一个 JSON 数组。 gson 试图解析组数组:JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@1f4db697 无法反序列化 json 对象“[{\"sigTemplateId\": 1,\"sigTemplateGroupId\": 1,\"name\":\"Group 1\",\"ordinal\": 1}]"给定类型 java.util.ArrayList

我的目标代码是:

public class SigTemplateObj {

    int sigTemplateId;
    String dyninkName;
    int dyninkFormId;
    String name;

    //children collections
    ArrayList<SigTemplateFieldObj> fields;
    ArrayList<SigTemplateGroupObj> groups;
...
}

public class SigTemplateGroupObj {
    int sigTemplateGroupId;
    int sigTemplateId;
    int ordinal;
    String name;
...
}

我已经尝试了上面的代码和这一行,并且两次都得到了相同的结果。

SigTemplateObj sigTemplateToSave = gson.fromJson(jsonData, SigTemplateObj.class);

如有任何帮助,我们将不胜感激。 谢谢, 埃里克

现在我只需要修复我的 javascript 以将组数组视为数组而不是字符串:

var testObject = new Object();
        testObject.sigTemplateId = 1;
        testObject.name = 'Test Ticket Template';
        testObject['groups'] = [];
        var testGroup = new Object();
        testGroup.sigTemplateId = 1;
        testGroup.sigTemplateGroupId = 1;
        testGroup.name = 'Group 1';
        testGroup.ordinal = 1;
        testObject.groups.push(testGroup);

        var json = JSON.stringify(testObject);

最佳答案

groups数组不是一个数组,而是一个字符串:

"groups": "..."

试试这个 JSON:

{
    "sigTemplateId": 1,
    "name": "Test Ticket Template",
    "groups": [{"sigTemplateId": 1, "sigTemplateGroupId": 1, "name": "Group 1", "ordinal": 1}]
}

关于java - 使用 gson 时出现错误而不是 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365416/

相关文章:

json - 谷歌图表json日期格式

java - 如何正确使用 GroupLayout 来移动组件/面板?

java - 在android中读取数据sqlite失败

java - Eclipse NullPointerException 我似乎无法修复

javascript - 如何停止文本滚动?

json - 是否可以在JSON中创建自定义对象键? [复制]

java - 有人可以解释为什么这段代码不会将图像中的所有其他像素列都涂成红色吗?

JavaScript 异步函数返回值

javascript - 如何让 webpack 在构建过程中不将 process.env 变量转换为其值?

java - 序列化扩展map的json对象