当前位置: 首页 > 面试题库 >

Jackson Json:如何将数组转换为JsonNode和ObjectNode?

赫连坚
2023-03-14
问题内容

给定员工和公司等级

Company
{
    String companyName;
}

Employee
{
    String employeeName;
}

和我的代码如下

List<Employee> e = new ArrayList<Employee>();
.....
.....

我希望我能得到这样的结果

{
    "company":{ 
                "companyName":"cName",
                "Employee":[
                    {"employeeName":"myName1"},
                    {"employeeName":"myName2"},
                    {"employeeName":"myName3"}
                ]
              }
}

这是一个简单的问题,但是我有些困惑。…尤其是Gson和Json…。

请不要提出其他图书馆,我 强制NEED 这个库的工作。而且由于某些情况,我 想要这个课。

Company
{
    String companyName;
    List<Employee> employees;
}

因此,我需要 手动 将其序列化为json字符串。

编辑: @Sotirios Delimanolis声明的类是设计类之间关系的正确方法。但是,那不是我想要的。

@hsluo的答案是正确的!和@Sotirios Delimanolis提到的一样。完全解决这个问题。

我确实找到了另一种使用Hashmap的方法

HashMap k = new HashMap();
List<employee> y = new ArrayList<employee>();
y......
k.put("records", y);
k.put("total", total);

然后返回到@Responbody,结果与@hsluo回答完全相同。

并感谢@Sotirios Delimanolis,@ hsluo来帮助我。


问题答案:
ObjectMapper mapper = new ObjectMapper();
List<Employee> e = new ArrayList<Employee>();
ArrayNode array = mapper.valueToTree(e);
ObjectNode companyNode = mapper.valueToTree(company);
companyNode.putArray("Employee").addAll(array);
JsonNode result = mapper.createObjectNode().set("company", companyNode);


 类似资料:
  • 我正在使用websocket和JsonNode开发Play framewrok 2。前端通过使用websocket连接到play framework后端。我将javascript数组转换为json节点,并通过使用webscoket连接将其发送到后端。现在,我的问题是如何将json对象转换为java数组或任何合适的结构,以便操作数据。 这是我创建的json对象 这是动态填充的数组 下面的代码发送数据

  • 线程“main”java.lang.nosuchmethoderror中出现异常:com.fasterxml.jackson.core.jsonFactory.createparser(ljava/net/URL;)lcom/fasterxml/jackson/core/jsonParser;在com.fasterxml.jackson.databind.objectmapper.readtree

  • 问题内容: 如何在PHP中将数组转换为SimpleXML对象? 问题答案: 一个简短的: 结果是 键和值被交换- 您可以在array_walk之前用来解决。需要PHP5。您可以改用PHP 5 ,但那时您将不会进入xml。

  • 问题内容: 这似乎有点不正常,但我在寻找一个有效的方式来变换/映射成。 我将模型的一些信息存储在json文件中,并且我必须支持模型的几个版本。 我要做的是将json文件加载到JsonNode的内存中,应用一些版本控制策略以使其与我的Model的最新版本匹配。 除非有更快的方法,否则我可能最终将手动将其应用于模型 问题答案: 在Jackson 2.4中,可以进行如下转换: 杰克逊在哪儿? 在旧版的J

  • 问题内容: 我将JSON库从org.json更改为Jackson,我想迁移以下代码: 现在在杰克逊,我有以下几点: 但是我不喜欢那里的演员,有可能吗?有没有一种等效于的方法,以便在不是数组的情况下进行适当的错误处理? 问题答案: 是的,Jackson手动解析器的设计与其他库完全不同。特别是,您会注意到它具有通常与其他API的数组节点关联的大多数功能。因此,您无需强制转换为即可使用。这是一个例子: