怎么将两个list集合按照条件合成一个list

zhiyuku4 2016-12-26 01:38:59

{
"list1": [
{
"id": "238",
"username": "凤20",
"peiouid": "255,258"
}
],
"list2": [
{
"id": "255",
"username": "wo1",
"peiouid": null
},
{
"id": "258",
"username": "1231132",
"peiouid": ""
}
]
}


上面的两个list集合,我想通过条件查找list2中的id 是在 "peiouid": "255,258"的,找到后把他和在一起,
最终变成

{
"list1": [
{
"id": "238",
"username": "凤20",
"peiouid": "255,258",
"list2": [
{
"id": "255",
"username": "wo1",
"peiouid": null
},
{
"id": "258",
"username": "1231132",
"peiouid": ""
}
]
}
]
}
...全文
1578 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nikyotensai 2016-12-26
  • 打赏
  • 举报
回复
引用 9 楼 m2200 的回复:
public class TestJson {

	public static void main(String[] args) {
		String s = "{" + "\"list1\": [" + "{" + "\"id\": \"238\","
				+ "\"username\": \"凤20\"," + "\"peiouid\": \"255,258\"" + "}"
				+ "]," + "\"list2\": [" + "{" + "\"id\": \"255\","
				+ "\"username\": \"wo1\"," + "\"peiouid\": null" + "}," + "{"
				+ "\"id\": \"258\"," + "\"username\": \"1231132\","
				+ "\"peiouid\": \"\"" + "}" + "]" + "}";
		JSONObject jo = JSON.parseObject(s);
		JSONArray joList1 = jo.getJSONArray("list1");
		String peiouid = joList1.getJSONObject(0).getString("peiouid");
		JSONArray jaList = new JSONArray();
		JSONArray jaList2 = jo.getJSONArray("list2");
		for(int i=0;i<jaList2.size();i++){
			JSONObject ji = jaList2.getJSONObject(i);
			if(peiouid.contains(ji.getString("id"))){
				jaList.add(ji);
			}
		}
		joList1.getJSONObject(0).put("list2", jaList);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list1", joList1);
		System.out.println(jsonObject);
	}
}
公交哥还是高手
zhiyuku4 2016-12-26
  • 打赏
  • 举报
回复
引用 9 楼 m2200 的回复:
public class TestJson {

	public static void main(String[] args) {
		String s = "{" + "\"list1\": [" + "{" + "\"id\": \"238\","
				+ "\"username\": \"凤20\"," + "\"peiouid\": \"255,258\"" + "}"
				+ "]," + "\"list2\": [" + "{" + "\"id\": \"255\","
				+ "\"username\": \"wo1\"," + "\"peiouid\": null" + "}," + "{"
				+ "\"id\": \"258\"," + "\"username\": \"1231132\","
				+ "\"peiouid\": \"\"" + "}" + "]" + "}";
		JSONObject jo = JSON.parseObject(s);
		JSONArray joList1 = jo.getJSONArray("list1");
		String peiouid = joList1.getJSONObject(0).getString("peiouid");
		JSONArray jaList = new JSONArray();
		JSONArray jaList2 = jo.getJSONArray("list2");
		for(int i=0;i<jaList2.size();i++){
			JSONObject ji = jaList2.getJSONObject(i);
			if(peiouid.contains(ji.getString("id"))){
				jaList.add(ji);
			}
		}
		joList1.getJSONObject(0).put("list2", jaList);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list1", joList1);
		System.out.println(jsonObject);
	}
}
感谢大佬 学习了,
爱睡觉的阿狸 2016-12-26
  • 打赏
  • 举报
回复
public class TestJson {

	public static void main(String[] args) {
		String s = "{" + "\"list1\": [" + "{" + "\"id\": \"238\","
				+ "\"username\": \"凤20\"," + "\"peiouid\": \"255,258\"" + "}"
				+ "]," + "\"list2\": [" + "{" + "\"id\": \"255\","
				+ "\"username\": \"wo1\"," + "\"peiouid\": null" + "}," + "{"
				+ "\"id\": \"258\"," + "\"username\": \"1231132\","
				+ "\"peiouid\": \"\"" + "}" + "]" + "}";
		JSONObject jo = JSON.parseObject(s);
		JSONArray joList1 = jo.getJSONArray("list1");
		String peiouid = joList1.getJSONObject(0).getString("peiouid");
		JSONArray jaList = new JSONArray();
		JSONArray jaList2 = jo.getJSONArray("list2");
		for(int i=0;i<jaList2.size();i++){
			JSONObject ji = jaList2.getJSONObject(i);
			if(peiouid.contains(ji.getString("id"))){
				jaList.add(ji);
			}
		}
		joList1.getJSONObject(0).put("list2", jaList);
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("list1", joList1);
		System.out.println(jsonObject);
	}
}
爱睡觉的阿狸 2016-12-26
  • 打赏
  • 举报
回复
引用 5 楼 zhiyuku4 的回复:
[quote=引用 3 楼 m2200 的回复:] 取出peiouid的值,peiouid.contain(id),像这样依次和list2的所有id进行比较
这个peiouid的值是多个的 所以你这样匹配是 匹配不了的,然后那个put是直接装进去。我也试过其他的add或者addAll 这都是直接装,没有显示出层级关系[/quote] 哎
浮云若水 2016-12-26
  • 打赏
  • 举报
回复
手打的上面. 打错
浮云若水 2016-12-26
  • 打赏
  • 举报
回复
JSONArray list2=JSONObject,getJSONArray("list2"); JSONObject list1=JSONObject,getJSONObject("list1"); for(int i=0;i<list2.size();i++){ //这中间可以把list2 中不满足条件的剔除 } list1.put("list2",list2);
zhiyuku4 2016-12-26
  • 打赏
  • 举报
回复
引用 3 楼 m2200 的回复:
取出peiouid的值,peiouid.contain(id),像这样依次和list2的所有id进行比较
这个peiouid的值是多个的 所以你这样匹配是 匹配不了的,然后那个put是直接装进去。我也试过其他的add或者addAll 这都是直接装,没有显示出层级关系
爱睡觉的阿狸 2016-12-26
  • 打赏
  • 举报
回复
fastjson的JSONObject有个put方法,可以让你把list2放入list1里。
爱睡觉的阿狸 2016-12-26
  • 打赏
  • 举报
回复
取出peiouid的值,peiouid.contain(id),像这样依次和list2的所有id进行比较
zhiyuku4 2016-12-26
  • 打赏
  • 举报
回复
引用 1 楼 qnmdcsdn 的回复:
转成json对象操作一下
然后怎么匹配条件 装进去,主要难在这
  • 打赏
  • 举报
回复
转成json对象操作一下

81,094

社区成员

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

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