JsonNode 读取数据

jsonResponse =
{
    "status":"success",
    "data":{
        "id":1,
        "dealerInfoId":1,
        "dealerName":"北京长怡汽车销售服务有限公司",
        "address":"广州市",
        "active":true,
        "createdAt":"2019-01-24 18:28:45",
        "updatedAt":"2019-01-24 18:28:50",
        "stockImages":null,
        "imageIds":"[1, 2]"
    },
    "message":"",
    "code":0
}

现在有一个Json对象如上所示,那么应该怎么读取data.imageIds呢?

import com.fasterxml.jackson.databind.ObjectMapper;

@Autowired
private ObjectMapper mObjectMapper;


JsonNode jsonNode = mObjectMapper.readTree(jsonResponse).findPath("data").get("imageIds");

String imageIds = jsonNode.traverse(mObjectMapper).readValueAs(String.class);

同理,可获取imageIds同级的键值!

### 将Java对象转换为JsonNode 为了实现将Java对象转换成`JsonNode`,可以利用Jackson库中的`ObjectMapper`类。通过调用该类实例的方法,能够轻松完成这一过程。 ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; public class ObjectToJsonNodeExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); // 假设有一个简单的POJO类User User user = new User("John", "Doe"); // 使用convertValue方法将对象转为JsonNode JsonNode jsonNode = mapper.convertValue(user, JsonNode.class); System.out.println(jsonNode.toString()); } } class User { private String firstName; private String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } // Getters and setters are omitted for brevity. } ``` 上述代码展示了如何定义一个普通的Java对象(这里是一个名为`User`的简单实体),并通过`ObjectMapper`提供的`convertValue()`函数将其转变为`JsonNode`类型的节点[^1]。 此外,在某些情况下可能希望直接从JSON字符串读取并映射至`JsonNode`: ```java String jsonString = "{\"firstName\":\"Jane\",\"lastName\":\"Smith\"}"; JsonNode nodeFromJsonString = mapper.readTree(jsonString); System.out.println(nodeFromJsonString.toString()); ``` 这段代码片段说明了如果已经有了现成的JSON格式的数据串,则可以直接使用`readTree()`来进行解析得到对应的`JsonNode`实例[^2]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值