json-lib 关于json字符串转化为 复杂对象问题

本文详细介绍了解析特定格式的JSON字符串,并将其转换为复合对象的过程。通过具体代码示例,展示了如何逐层构建Location与Position类,最终形成包含log_id、words_result_num等属性的Image对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

{
	"log_id": 351445902943377670,
	"words_result_num": 2,
	"words_result": [{
		"location": {
			"width": 306,
			"top": 0,
			"left": 3,
			"height": 83
		},
		"words": "单位:城市使浊"
	}, {
		"location": {
			"width": 146,
			"top": 41,
			"left": 402,
			"height": 35
		},
		"words": "8月7日"
	}]
}

str字符串如上:

 先从内到外建类。 如:Location 类 字段如下:

再建 一个Position 类字段如下

 

主要代码如下:

String str =
"{\"log_id\": 351445902943377670, \"words_result_num\": 21, \"words_result\": [{\"location\": {\"width\": 306, \"top\": 0, \"left\": 3, \"height\": 83}, \"words\": \"单位:城市使浊\"}, {\"location\": {\"width\": 146, \"top\": 41, \"left\": 402, \"height\": 35}, \"words\": \"8月7日\"}]}";


JSONObject jsonObject=JSONObject.fromObject(str);
//获得log_id
		   String log_id = jsonObject.getString("log_id");
		   //获得words_result_num
		   String words_result_num = jsonObject.getString("words_result_num");
		   // 获得words_result
		   JSONArray words_result = jsonObject.getJSONArray("words_result");
		   Image image = new Image();
		   List<Position> list = new ArrayList<Position>();
		   for(int i = 0 ;i < words_result.size();i++) {
			   //获得words
			   String words = words_result.getJSONObject(i).getString("words");
			   //获得locaton
			   JSONObject jo = words_result.getJSONObject(i).getJSONObject("location");
			   Position p = new Position();
			   Location location = new Location();
			   String top = jo.getString("top");
			   String left = jo.getString("left");
			   String width = jo.getString("width");
			   String height = jo.getString("height");
			   location.setTop(top);
			   location.setHeight(height);
			   location.setLeft(left);
			   location.setWidth(width);
			   p.setWords(words);
			   p.setLocation(location);
			   list.add(p);
			   
		   }
		   image.setLog_id(log_id);
		   image.setWord_result(list);
		   image.setWords_result_num(words_result_num);

最后 的image 就是想要的对象,这个方法麻烦一些,但是每条语句都能知道是什么意思。我感觉好理解就是简单。

这个方法基本通用所有的复合类型对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值