已注销用户的gravatar头像
已注销用户 2015-10-29 17:34:31

java怎么通过json key值返回json字符串下符合条件的json value值?

现在有一json字符串如下(看图说话):

java怎么通过json key值返回json字符串下符合条件的json value值?

需求:1,随意输入一个参数 比如输入的 status,结果就返回对应的value;

2,假如输入的是order(节点下有数据) 那么就输出 order 下所有的 数据

3,如果输入的key 没有对应的value 就输出null,这里排除 对应节点下有值的情况

4,良辰愿意和有实力的牛牛说话 用代码来说话 回答就贴代码

5,用代码说话 用代码说话 用代码说话 重要的事情说三遍最后 

附上json:

{
	"trade_fullinfo_get_response": {
		"trade": {
			"orders": {
				"order": [{
					"adjust_fee": "0.00",
					"buyer_rate": false,
					"cid": 50012137,
					"discount_fee": "0.00",
					"is_oversold": false,
					"num": 1,
					"num_iid": 2100534490030,
					"oid": 193683735371084,
					"order_from": "TAOBAO",
					"outer_iid": "2100534490030",
					"part_mjz_discount": "0.00",
					"payment": "10.00",
					"pic_path": "http://img01.tbsandbox.com/bao/uploaded/i1/TB1KiCIXXXXXXb1XXXXXXXXXXXX_!!0-item_pic.jpg",
					"price": "10.00",
					"refund_status": "NO_REFUND",
					"seller_rate": false,
					"seller_type": "C",
					"sku_id": "31062026048",
					"sku_properties_name": "套餐种类:官方标配;颜色分类:天蓝色",
					"snapshot_url": "d:193683735371084_1",
					"status": "WAIT_SELLER_SEND_GOODS",
					"title": "沙箱测试test_yj",
					"total_fee": "10.00"
				}]
			},
			"seller_nick": "sandbox_c_20",
			"tid": 193683735371084
		},
		"request_id": "16qgoyoh8zfz1"
	}
}
所有回答列表(5)
heroshen的gravatar头像
heroshen  LV7 2015年10月29日

你看使用fastjson这个jar包中的功能应该能满足你的要求,需要知道该key在json中所在位置,测试代码如下

public static void main(String args[]){
		String jsonStr = "{\"trade_fullinfo_get_response\":{\"trade\":{\"orders\":{\"order\":[{\"adjust_fee\":\"0.00\",\"buyer_rate\":false,\"cid\":50012137,\"discount_fee\":\"0.00\",\"is_oversold\":false,\"num\":1,\"num_iid\":2100534490030,\"oid\":193683735371084,\"order_from\":\"TAOBAO\",\"outer_iid\":\"2100534490030\",\"part_mjz_discount\":\"0.00\",\"payment\":\"10.00\",\"pic_path\":\"http://img01.tbsandbox.com/bao/uploaded/i1/TB1KiCIXXXXXXb1XXXXXXXXXXXX_!!0-item_pic.jpg\",\"price\":\"10.00\",\"refund_status\":\"NO_REFUND\",\"seller_rate\":false,\"seller_type\":\"C\",\"sku_id\":\"31062026048\",\"sku_properties_name\":\"套餐种类:官方标配;颜色分类:天蓝色\",\"snapshot_url\":\"d:193683735371084_1\",\"status\":\"WAIT_SELLER_SEND_GOODS\",\"title\":\"沙箱测试test_yj\",\"total_fee\":\"10.00\"}]},\"seller_nick\":\"sandbox_c_20\",\"tid\":193683735371084},\"request_id\":\"16qgoyoh8zfz1\"}}";
		JSONObject json = JSONObject.parseObject(jsonStr);
		Object trade_fullinfo_get_response = json.get("trade_fullinfo_get_response");
		System.out.println(trade_fullinfo_get_response);
		if(trade_fullinfo_get_response!=null){
			JSONObject respJson = JSONObject.parseObject(trade_fullinfo_get_response.toString());
			System.out.println(respJson.get("trade"));
			System.out.println(respJson.get("request_id"));
		}
	}
评论(6) 最佳答案
hrose12的gravatar头像
hrose12  LV21 2015年10月30日

解析json

逐客教我的gravatar头像
逐客教我  LV7 2015年10月31日

最好是做成json先转map,传入a.b.c就可以在map的递归迭代中直接找到那个c节点。

最代码温柔的gravatar头像
最代码温柔  LV18 2015年11月4日

 JSONObject json = JSONObject.parseObject(jsonStr);

json.getString("节点名字");

例如: "request_id": "16qgoyoh8zfz1"

String result=json.getString("request_id");

此时的  result为  16qgoyoh8zfz1

tulongx的gravatar头像
tulongx  LV5 2015年11月7日

其实估计底层都是做成map然后查.可以自己写.

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友