如何将LinkedHashSet集合添加到JsonObjectBuilder对象?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将LinkedHashSet集合添加到JsonObjectBuilder对象?相关的知识,希望对你有一定的参考价值。

我正在创建一个JsonBuilderObject。我的程序遍历一个集合,集合中的每个项目都包含两个整数值和三个集合。这是我用过的代码。我想将record.matchingTerms添加到我的objectBuilder中,这是一个LinkedHashSet。有人可以提供一些关于如何做到这一点的提示吗?

        //start Building a JSON Tree
    JsonObjectBuilder jsonRootBuilder;
    jsonRootBuilder = Json.createObjectBuilder();
    JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
    for (Record record : processResultArray) {
        //create json object for each record. 
        JsonObjectBuilder recordJsonBuilder = Json.createObjectBuilder();
        recordJsonBuilder.add("id1", record.id1);
        recordJsonBuilder.add("id2", record.id2);
        recordJsonBuilder.add("matchingTerm", ?); //record.matchingTerms is a LinkedHashSet 
        //creating a json array to preserve matching terms in an array
        //creating a json array to preserve original terms from table one


        //creating a json array to preserve original terms from table two

        JsonObject recordJson = recordJsonBuilder.build();

        //add the record to our array of records 
        jsonArrayBuilder.add(recordJson);
    }

    JsonArray arrayObject = jsonArrayBuilder.build();
    jsonRootBuilder.add("records",arrayObject );
    JsonObject rootObject = jsonRootBuilder.build();
答案

我总是发现这些API笨拙而且艰巨。我只是创建我的对象,通常是一个Map<String, Object>,其值可以是基元,列表或更多这样的地图,并使用你方便的任何库序列化它 - 无论是Spring选择的jackson,还是gson或其他东西。

这是一个使用jackson的简单示例:

List<Object> list = new ArrayList<>();

for ( <each record > ) {
    Map<String, Object> obj = new HashMap<>();
    list.add(obj);
    obj.put("id1", record.id1);
    obj.put("id2", record.id2);
    // etc
}

String json = new ObjectMapper().writeValueAsString(list);

如果要保留obj中条目的顺序,请改用LinkedHashMap

JSON序列化器知道如何从java集合库中编写所有对象。

以上是关于如何将LinkedHashSet集合添加到JsonObjectBuilder对象?的主要内容,如果未能解决你的问题,请参考以下文章

java问题。集合 HashSet,LinkedHashSet,TreeSet,ArrayLIst,LinkList,Vector这些集合在平时应用中,该如何

快学Scala第13章----集合

Set 的其他实现类:LinkedHashSet

java集合Set集合之LinkedHashSet 详解

死磕 java集合之LinkedHashSet源码分析

[Java基础]LinkedHashSet集合概述和特点