java - 如何写入没有属性名称的 JSON 值

标签 java json jackson

我需要创建一些没有属性名称的 JSON 输出。这是要发送到浏览器中的 DataTables ( datatables.net),DataTables 需要这样的 JSON:

{
    "aaData": [
        [
            "Trident",
            "Internet Explorer 4.0",
            "Win 95+",
            "4",
            "X"
        ],
        [
            "Trident",
            "Internet Explorer 5.0",
            "Win 95+",
            "5",
            "C"
        ]
    ]
}

(样本来自 here。向下滚动到“服务器响应”。)

因为我的数据不是来自已知类,所以我通过在内存中创建树然后调用 rootNode.toString() 来写入数据:

public String jsonTest()
{
    final JsonNodeFactory nodeFactory = JsonNodeFactory.instance;
    ObjectNode rootNode = nodeFactory.objectNode();

    ArrayNode arrayNode = nodeFactory.arrayNode();
    rootNode.put("aaData", arrayNode);

    for (int i = 0; i < 3; i++) {
        ObjectNode dataNode = nodeFactory.objectNode();
        arrayNode.add(dataNode);
        dataNode.put("field1", "Trident");
        dataNode.put("field2", "Internet Explorer 4.0");
        dataNode.put("field3", "Win 95+");
        dataNode.put("field4", "4");
        dataNode.put("field5", "X");
    }

    return rootNode.toString();
}

这会产生:

{
    "aaData": [
        {
            "field1": "Trident",
            "field2": "Internet Explorer 4.0",
            "field3": "Win 95+",
            "field4": "4",
            "field5": "X"
        },
        {
            "field1": "Trident",
            "field2": "Internet Explorer 4.0",
            "field3": "Win 95+",
            "field4": "4",
            "field5": "X"
        },
        {
            "field1": "Trident",
            "field2": "Internet Explorer 4.0",
            "field3": "Win 95+",
            "field4": "4",
            "field5": "X"
        }
    ] 
}

我的问题:如何完全抑制“field1”、“field2”等,以便获得 json 数据表(如上所示)?

最佳答案

您是否应该创建数组节点而不是对象节点?

public String jsonTest()
{
    final JsonNodeFactory nodeFactory = JsonNodeFactory.instance;
    ObjectNode rootNode = nodeFactory.objectNode();

    ArrayNode arrayNode = nodeFactory.arrayNode();
    rootNode.put("aaData", arrayNode);

    for (int i = 0; i < 3; i++) {
        ArrayNode dataNode = nodeFactory.arrayNode();
        arrayNode.add(dataNode);
        dataNode.add("Trident");
        dataNode.add("Internet Explorer 4.0");
        dataNode.add("Win 95+");
        dataNode.add("4");
        dataNode.add("X");
    }

    return rootNode.toString();
}

关于java - 如何写入没有属性名称的 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22365677/

相关文章:

php - 是否可以编辑 Json 输出?

android - 向一个 url 发送咨询,但 JSON 返回始终为 null

java - 使用 Jackson 排除自定义解串器

java - 如何使用 Jackson 全局定义命名约定

java - 如何在一行中打印一个数组的所有内容?

java - 为什么 setImageResource 方法不起作用?

json - Swift 和 Alamofire SSL 固定和处理挑战

java - 为什么java允许零长度索引(在中间)数组?

java - 如何在 JSF 数据表的相应行中放置错误消息?

generics - 使用 Jackson 序列化 Map<Date, String>