java JsonArray数组遍历组成新的json对象,谁给说下遍历方法???急急急,求大神

Feng火 2016-01-21 05:40:31
java JsonArray数组遍历组成新的json对象
jsonArray1 =
[{"checked_id":"10002","content_title":"duo1","content":"du11"},{"checked_id":"10002","content_title":"duo1","content":"du12"},{"checked_id":"10002","content_title":"duo2","content":"du21"},{"checked_id":"10002","content_title":"duo2","content":"du22"}]
遍历成功的数组为:
"key_property_list" : [
{
"key" : "duo1",
"value_list" : [
{
"value" : "du11"
},
{
"value" : "du12"
}
]
},{
"key" : "duo2",
"value_list" : [
{
"value" : "du21"
},
{
"value" : "du22"
}
]
}
]
...全文
6637 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Feng火 2016-01-25
  • 打赏
  • 举报
回复
已解决,我也找不到更好的办法了
Feng火 2016-01-22
  • 打赏
  • 举报
回复
不能正常返回字符串,老是以对象方式
街头小贩 2016-01-21
  • 打赏
  • 举报
回复

result:[{"key":"duo2","value_list":[{"value":"du21"},{"value":"du22"}]},{"key":"duo1","value_list":[{"value":"du11"},{"value":"du12"}]}]

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class JsonCovert {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String jsonString="[{\"checked_id\":\"10002\",\"content_title\":\"duo1\",\"content\":\"du11\"},{\"checked_id\":\"10002\",\"content_title\":\"duo1\",\"content\":\"du12\"},{\"checked_id\":\"10002\",\"content_title\":\"duo2\",\"content\":\"du21\"},{\"checked_id\":\"10002\",\"content_title\":\"duo2\",\"content\":\"du22\"}]";
		Gson gson=new Gson();
		List<InnerObject> data=gson.fromJson(jsonString, new TypeToken<List<InnerObject>>(){}.getType());
		Map<String,CovertObject> covertData=new Hashtable<>();

		for(InnerObject iob:data){
			String k=iob.getContent_title();
			if(!covertData.containsKey(k)){
				covertData.put(k, new CovertObject(k,iob.getContent()));
			}else{
				covertData.get(k).addCovertObject(iob.getContent());
			}
		}
		/*测试
		Set<String> keySet=covertData.keySet();
		for(String ks:keySet){
			System.out.println("key:"+ks);
			List<CovertObjectType> valList=covertData.get(ks).getValue_list();
			for(CovertObjectType cot:valList){
				System.out.println("value:"+cot);
			}
		}*/
		String covertJsonString =gson.toJson(covertData.values());
		System.out.println("result:"+covertJsonString);
	}

}
class CovertObject{
	private final String key;
	private final List<CovertObjectType> value_list=new ArrayList<>();
	
	public CovertObject(String title,String content) {
		super();
		this.key = title;
		this.value_list.add(new CovertObjectType(content));
	}
	public String getKey() {
		return key;
	}
	public List<CovertObjectType> getValue_list() {
		return value_list;
	}
	public void addCovertObject(String content){
		this.value_list.add(new CovertObjectType(content));
	}
}
class CovertObjectType{
	private final String value;

	public CovertObjectType(String value) {
		super();
		this.value = value;
	}

	public String getValue() {
		return value;
	}

	@Override
	public String toString() {
		return "CovertObjectType [value=" + value + "]";
	}
	
}
class InnerObject{
	private int  checked_id;
	private String content_title;
	private String content;
	
	public int getChecked_id() {
		return checked_id;
	}
	public void setChecked_id(int checked_id) {
		this.checked_id = checked_id;
	}
	public String getContent_title() {
		return content_title;
	}
	public void setContent_title(String content_title) {
		this.content_title = content_title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	@Override
	public String toString() {
		return "InnerObject [checked_id=" + checked_id + ", content_title=" + content_title + ", content=" + content
				+ "]";
	}
}
mulingqi 2016-01-21
  • 打赏
  • 举报
回复
创建array2,遍历array1,拿出每项的title的值去与array里面的所有key相比,若有相同则往value_list里面添加,若没有相同的则new一个对象var obj = {"value_list":[]};然后将对应的值添加进去。

2,100

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧