前提
相关的jar包 https://download.csdn.net/download/qq_37591637/11162911
JSONArray与JSONObject的区别
JSONArray最外面一层是[] 而JSONObject最外面一层是{}
JSONArray与JSONObject的共同点
二者可以添加数组 list集合 map集合、基础数据类型 自定义类型等等
package cn.com.socket;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class A {
public static void main(String[] args) {
//jsonobject的crud
jsonO();
//jsonarray的crud
jsonA();
}
public static void jsonO(){
JSONObject jo=new JSONObject();
//基础类型
jo.put("str", "JSONArray");
jo.put("int", 1);
jo.put("double", 2.032);
jo.put("boolean", false);
//数组 list集合 map集合
String [] sz={"sz0","sz1","sz2"};
jo.put("sz", sz);
User u=new User("username", "tell", "money");
jo.put("user", u);
List<String> list=new ArrayList<>();
list.add("list0");
list.add("list1");
list.add("list2");
list.add("list3");
list.add("list4");
jo.put("list", list);
Map<String, Integer> map=new HashMap<String, Integer>();
map.put("map0", 110);
map.put("map1", 119);
map.put("map2", 120);
jo.put("map", map);
//1、修改 自定义对象中的tell 为17356896201
jo.getJSONObject("user").put("tell", "17356896201");
//2、修改list集合里面的list1为l1
jo.getJSONArray("list").element(1,"l1");
//3、修改map集合中map1的值为555
jo.getJSONObject("map").put("map1", 555);
//4、修改sz中的sz1为sss1
jo.getJSONArray("sz").element(1,"sss1");
//5、修改JSONArray为jsy
jo.put("str", "jsy");
//循环遍历
for (Object s : jo.keySet()) {
System.out.println(s+"--"+jo.getString((String) s));
}
System.out.println("------------------------------------------");
}
public static void jsonA(){
//jsonarray的增删改查
JSONArray ja=new JSONArray();
ja.add("JSONArray");
ja.add(1);
ja.add(1.23);
ja.add('d');
User u=new User("username", "tell", "money");
ja.add(u);//4
List<String> list=new ArrayList<>();
list.add("list0");
list.add("list1");
list.add("list2");
list.add("list3");
list.add("list4");
ja.add(list);//5
Map<String, Integer> map=new HashMap<String, Integer>();
map.put("map0", 110);
map.put("map1", 119);
map.put("map2", 120);
ja.add(map);//6
String [] sz={"sz0","sz1","sz2"};
ja.add(sz);//7
//1、修改 自定义对象中的tell 为17356896201
ja.getJSONObject(4).put("key", "17356896201");
//2、修改list集合里面的list1为l1
ja.getJSONArray(5).element(1,"L1");
//3、修改map集合中map1的值为555
ja.getJSONObject(6).put("map1", 555);
//4、修改sz中的sz1为sss1
ja.getJSONArray(7).element(1,"sss1");
//5、修改JSONArray为jsy
ja.element(0, "jsy");
//循环遍历
for (int i = 0; i < ja.size(); i++) {
System.out.println(ja.get(i));
}
System.out.println("------------------------------------------");
}
}
控制台信息如下
总结
json数组添加任何类型的数据都是add(); json对象添加任何类型的数据都是put(key,val)
对于list集合以及数组的获取都是.getJSONArray(index)
对于map集合以及自定义对象的获取都是.getJSONObject(index)
代码如下
package cn.com.tools;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
/*author:命运的信徒
* date:2019/5/18
*/
String str ="[{'otitle':'会','source':'7'},{'otitle':'不会','source':'3'}]";
//1.把字符串类型的json数组对象转化JSONArray
JSONArray json=JSONArray.fromObject(str);
//2、循环遍历这个数组
for(int i=0;i<json.size();i++){
//3、把里面的对象转化为JSONObject
JSONObject job = json.getJSONObject(i);
// 4、把里面想要的参数一个个用.属性名的方式获取到
System.out.println(job.get("otitle")+":"+job.get("source")) ;
}
}
}
效果图如下
您的支持是我分享的动力