Java--jackson获取嵌套json字符串的值

54 篇文章 0 订阅

Java--jackson获取嵌套json字符串的值

    public static void main(String args[]) throws JsonProcessingException, IOException{
    	String jsonString="{\"mac_algorithm\":\"hmac-sha-1\",\"mac_key\":\"4d48e69cd33241bfbac641e01dda66c9\",\"token_type\":\"mac\",\"user\":{\"id\":586715549,\"name\":\"陈琦\",\"avatar\":[{\"type\":\"avatar\",\"url\":\"http://head.xiaonei.com/photos/0/0/men_head.gif\"},{\"type\":\"tiny\",\"url\":\"http://head.xiaonei.com/photos/0/0/men_tiny.gif\"},{\"type\":\"main\",\"url\":\"http://head.xiaonei.com/photos/0/0/men_main.gif\"},{\"type\":\"large\",\"url\":\"http://head.xiaonei.com/photos/0/0/men_main.gif\"}]},\"access_token\":\"474449|2.dYgaaycHv6w2CQ0K3X5HUijL8b4B6P1m.586715549.1421028736042\"}";
    	CooperationLoginController clc=new CooperationLoginController();
    	//Map<String, String> rs=clc.readJson2Map(jsonString);
    	//if(rs.containsKey("id")){
    	   //String uid = rs.get("id");
    	   //System.out.println("-----------------");
    	//}
    	 ObjectMapper mapper = new ObjectMapper();   
    	 //mapper.getNodeFactory();   
    	 JsonNode node = mapper.readTree(jsonString);
    	    
    	System.out.println("-------------"+node.get("access_token"));
    	System.out.println("-------------"+node.get("user"));
    	
    	String userJson=node.get("user").toString();
    	JsonNode nodeUser = mapper.readTree(userJson);
    	
    	System.out.println("-------------"+nodeUser.get("id"));
    	System.out.println("-------------"+nodeUser.get("name"));
    	System.out.println("-------------"+nodeUser.get("avatar"));
    	System.out.println("-------------"+nodeUser.get("avatar").get(0).get("url"));
    	System.out.println("-------------"+nodeUser.get("avatar").get(1).get("url"));
    	System.out.println("-------------"+nodeUser.get("avatar").get(2).get("url"));
    }


Java中解析复杂的JSON字符串可以使用一些第三方库,比如Jackson、Gson或者JsonSimple。这些库提供了方便的API来解析和操作JSON数据。 下面是使用Jackson库解析复杂JSON字符串的示例代码: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonParser { public static void main(String[] args) { String jsonString = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"zipcode\":\"10001\"},\"phoneNumbers\":[\"1234567890\",\"0987654321\"]}"; try { ObjectMapper objectMapper = new ObjectMapper(); // 解析JSON字符串JsonNode对象 JsonNode jsonNode = objectMapper.readTree(jsonString); // 获取字段 String name = jsonNode.get("name").asText(); int age = jsonNode.get("age").asInt(); // 获取嵌套字段 String city = jsonNode.get("address").get("city").asText(); String zipcode = jsonNode.get("address").get("zipcode").asText(); // 获取数组字段 JsonNode phoneNumbersNode = jsonNode.get("phoneNumbers"); for (JsonNode phoneNumberNode : phoneNumbersNode) { String phoneNumber = phoneNumberNode.asText(); System.out.println("Phone number: " + phoneNumber); } System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("City: " + city); System.out.println("Zipcode: " + zipcode); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意,上述示例中使用了Jackson库来解析JSON字符串,首先创建一个ObjectMapper对象,然后使用它的`readTree`方法将JSON字符串解析为JsonNode对象。接着可以通过JsonNode对象获取字段嵌套字段或者数组字段。 当然,你也可以使用其他的库来解析复杂JSON字符串,具体的使用方式可能会有所不同,但基本的原理是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值