如果属性的值是数组,你不需要对其修改时,直接用JsonNode 就行,isArray()判断是否是数组。
JsonNode courseScores = rootNode.get("courseScores");
if (courseScores.isArray() && !courseScores.isEmpty()) {
Iterator<JsonNode> elements = courseScores.elements();
while (elements.hasNext()) {
JsonNode score = elements.next();
System.out.println(score.toString());
结果如下:
{"course":"Java","score":95}
{"course":"C#","score":94}
{"course":"C++","score":89}
如果需要对值进行修改编辑,就得用ArrayNode 。
ObjectNode pythonNode = mapper.createObjectNode();
pythonNode.put("course", "python");
pythonNode.put("score", 100);
ArrayNode arrayNode = (ArrayNode)rootNode.get("courseScores");
if (arrayNode.isArray() && !arrayNode.isEmpty()) {
arrayNode.remove(0);
arrayNode.add(pythonNode);
Iterator<JsonNode> elements = arrayNode.elements();
while (elements.hasNext()) {
JsonNode score = elements.next();
System.out.println(score.toString());
结果如下:
{"course":"C#","score":94}
{"course":"C++","score":89}
{"course":"python","score":100}
简单来说 ObjectNode 和 ArrayNode 是 JsonNode 的扩展,ObjectNode 和 ArrayNode 是基于 JsonNode 的。
ArrayNode具有处理数组的特定方法。
更多的,因为 JsonNode 是不可变的,因此通常使用 JsonNode 来读取数据,ObjectNode 来写入数据。
package com.fasterxml.jackson.databind;
import com.fasterxml.jackson.core.JsonPointer;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.JsonSerializable.Base;
import ...
private static
JsonNodeFactory factory = new
JsonNodeFactory(false);
ObjectNode objectNode = factory.
objectNode();
ObjectNode data
ObjectNode =
JsonNodeFactory.instance.
objectNode();
介绍Jackson JsonNode和ObjectNode
Jackson JsonNode类,完整路径为com.fasterxml.jackson.databind.JsonNode,是Jackson的json树模型(对象图模型)。Jackson能读JSON至JsonNode实例,写JsonNode到JSON。本文不涉及json序列化或反序列化,主要介绍如何从头构建JsonNode对象图,之后你可以序列化为json。
1. JsonNode vs. ObjectNode
The Jackson JsonN
[1]有很多图片放服务器里,怎么能更好的管理,更方便拿到图片呢?
[2]想用
json 以一个对象数组的形式保存这些图片:以[{img:"图片名"},{img:"图片名"}....]形式
[3]虽说想法是很好,但不可能一条一条自己写吧,好歹咱也是21世纪敲代码的人。
[4]刚好最...
JsonNode是Jackson中为了处理JOSN文本的树模型(tree model)。可以将JSON文本转成JsonNode,也可以将JsonNode转成JOSN文本。。
ObjectNode和ArrayNode都是JsonNode类的扩展,不同的是JsonNode是只读的,而。...
– Start
除了 ObjectMapper 外,如果你不想创建和消息格式一样的对象模型,我们还可以使用 JsonNode 来访问 JSON 消息,下面是一个简单的例子。
package shangbo.jackson.demo19;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.dat...