Java Class 获取对应的Gson json 对象

Java Class for obtaining corresponding Gson json object

我有一个具有以下表示的 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 Class,可用于使用 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;
    }
}

以上 class 适用于序列化 text 字段,但我不确定我需要为 entities 使用什么数据类型,以便它创建一个三元组数组,格式为 "['T1', 'Person', [[0, 11]]]".

您的代码适用于所提供的 Json

但是:

entities 是多种类型的混合。

entities 中的每个 entity 都是一个 Array

entity中有3个元素:StringStringArray

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

{
    "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;
}