用于获取相应Gson json对象的Java类

用于获取相应Gson json对象的Java类,java,json,gson,Java,Json,Gson,我有一个json对象,其表示形式如下: { text : "Ed O'Kelley was the man who shot the man who shot Jesse James.", entities : [ ['T1', 'Person', [[0, 11]]], ['T2', 'Person', [[20, 23]]], ['T3', 'Person', [[37, 40]]], ['T4', 'P

我有一个json对象,其表示形式如下:

{
    text     : "Ed O'Kelley was the man who shot the man who shot Jesse James.",
    entities : [
        ['T1', 'Person', [[0, 11]]],
        ['T2', 'Person', [[20, 23]]],
        ['T3', 'Person', [[37, 40]]],
        ['T4', 'Person', [[50, 61]]],
    ], };
我需要创建一个Java类,该类可用于使用Gson创建具有上述结构的JSON

这就是我目前拥有的:

public class DocData
{
    private String text;

    private List<List<String>> entities;

    public DocData(final String text, final List<List<String>> entities)
    {
        this.text = text;
        this.entities = entities;
    }

    public List<List<String>> getEntities()
    {
        return entities;
    }
}
公共类DocData
{
私有字符串文本;
私人名单实体;
公共文档数据(最终字符串文本、最终列表实体)
{
this.text=文本;
这个。实体=实体;
}
公共列表getEntities()
{
返回实体;
}
}

上面的类用于序列化
文本
字段,但我不确定需要为
实体使用什么数据类型
,这样它就可以创建一个三元组数组,格式为
“['T1','Person',[[0,11]]”
,您的代码适合提供的
Json

然而:

实体
是多种类型的混合体

实体
中的每个
实体
都是一个
数组

实体中有3个元素:
字符串
字符串
数组

这不是推荐的方法。我建议使用:

{
    "text": "Ed O'Kelley was the man who shot the man who shot Jesse James.",
    "entities": [
        {
            "field_name_1": "T1",
            "field_name_2": "Person",
            "field_name_3": [
                [
                    0,
                    11
                ]
            ]
        }
        ...
    ]
}
在这种情况下,您将有2个Pojo:

public class DocData
{
    private String text;

    private List<Entity> entities;

    public DocData(final String text, final List<Entity> entities)
    {
        this.text = text;
        this.entities = entities;
    }

    public List<Entity> getEntities()
    {
        return entities;
    }
}


public class Entity
{
    private String field_name_1;

    private String field_name_2;

    private List<List<Integer>> field_name_3;
}
公共类DocData
{
私有字符串文本;
私人名单实体;
公共文档数据(最终字符串文本、最终列表实体)
{
this.text=文本;
这个。实体=实体;
}
公共列表getEntities()
{
返回实体;
}
}
公共类实体
{
私有字符串字段_name_1;
私有字符串字段_name_2;
私有列表字段_name_3;
}

您必须使用“三元组数组”吗?当前方法有什么问题(除了它不是
列表
)?这有助于@Pshemo我可以使用在这种情况下工作的任何替代数据结构。使用包装类在json表示中引入了另一个键,如:实体:[“包装类”:['T1','Person',[[0,11]]};问题是我无法更改JSON的结构,因为它是第三方工具所期望的固定格式JSON。我尝试过使用POJO实体,但没有成功。请确保检查
JSON
而不是
JSONschema
,同时检查
Gson