Json-lib 进行java与json字符串转换之二

此页面是否是列表页或首页?未找到合适正文内容。

Json-lib 进行java与json字符串转换之二

标签:nameeach.classlisttjson-lib帮助方式staticddr

二、list和json字符串的互转

list–》》json字符串

public static void listToJSON(){
Student stu=new Student();
stu.setName(\”JSON\”);
stu.setAge(\”23\”);
stu.setAddress(\”北京市海淀区\”);
List<Student> lists=new ArrayList<Student>();
lists.add(stu);
//1、使用JSONObject
//JSONObject listObject=JSONObject.fromObject(lists);
//2、使用JSONArray
JSONArray listArray=JSONArray.fromObject(lists);
//System.out.println(\”listObject:\”+listObject.toString());
System.out.println(\”listArray:\”+listArray.toString());
}

我把使用JSONObject的方式给注掉了,我们先看注释之前的结果,

Exception in thread \”main\” net.sf.json.JSONException: ‘object‘ is an array. Use JSONArray instead告诉我说有一个异常,通过查看源码发现,在使用fromObject方法的时候会先进行参数类型的判断,这里就告诉我们,传入的参数是一个array类型,因为使用的ArrayList,再来看,注释之后的结果,

listArray:[{\”address\”:\”北京市海淀区\”,\”age\”:\”23\”,\”name\”:\”JSON\”}]这样结果是正常的。

json字符串–》》list

从上面的例子可以看出list的对象只能转化为数组对象的格式,那么我们看下面的字符串到list的转化,

public static void jsonToList(){
String arrayStr=\”[{\\\”name\\\”:\\\”JSON\\\”,\\\”age\\\”:\\\”24\\\”,\\\”address\\\”:\\\”北京市西城区\\\”}]\”;
//转化为list
List<Student> list2=(List<Student>)JSONArray.toList(JSONArray.fromObject(arrayStr), Student.class);
for (Student stu : list2) {
System.out.println(stu);
}
//转化为数组
Student[] ss =(Student[])JSONArray.toArray(JSONArray.fromObject(arrayStr),Student.class);
for (Student student : ss) {
System.out.println(student);
}
}

打印结果,

Student [name=JSON, age=24, address=北京市西城区]

Student [name=JSON, age=24, address=北京市西城区]

由于字符串的格式为带有“[]”的格式,所以这里选择JSONArray这个对象,它有toArray、toList方法可供使用,前者转化为 java中的数组,或者转化为java中的list,由于这里有实体类进行对应,所以在使用时指定了泛型的类型(Student.class),这样就可 以得到转化后的对象。

三、map和json字符串的互转

map–》》json字符串

public static void mapToJSON(){
Student stu=new Student();
stu.setName(\”JSON\”);
stu.setAge(\”23\”);
stu.setAddress(\”中国上海\”);
Map<String,Student> map=new HashMap<String,Student>();
map.put(\”first\”, stu);
//

作者: 老毛桃

为您推荐

返回顶部