JSON的String字符串與Java的List列表對象的相互轉換


1.JSON的String字符串與Java的List列表對象的相互轉換

在前端:
1.如果json是List對象轉換的,可以直接遍歷json,讀取數據。
2.如果是需要把前端的List對象轉換為json傳到后台,param是ajax的參數,那么轉換如下所示:

var jsonStr = JSON.stringify(list); 
var param= {}; 
param.jsonStr=jsonStr; 

在后台:

import net.sf.json.JSONObject;
import net.sf.json.JSONArray;
1.把String轉換為List(str轉換為list) List<T> list = new ArrayList<T>(); JSONArray jsonArray = JSONArray.fromObject(str);//把String轉換為json list = JSONArray.toList(jsonArray,t);//這里的t是Class<T> 在這里,因為得到json字符串的時候用的是 JSONArray.fromObject(collenction),所有,在講json字符串轉換成json對象的時候, 也只能用JSONArray.toCollection,並且,一定要帶上后面的class參數。 2.把List轉換為json JSONArray json = JSONArray.fromObject(object); String str = json.toString();//把json轉換為String 再如: Teacher類中,有三個屬性。 private String teaId; private String teaName; private List<Student> stus; Teacher teacher_1 = new Teacher("編號1", "教師1", stus); JSONObject obj = JSONObject.fromObject(teacher_1); 這一步,將Teacher 對象轉換成json字符串的時候,沒有任何的問題。下面,將JSONObject 轉換成Teacher 對象,如果,不加后面的class參數,也會報這兒錯誤。加了后,這一步也正常。 Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class); Student studentBean = teacherBean.getStus().get(0); 當從teacherBean 對象中取出stus屬性的值時候,就會提示: Java.lang.ClassCastException:net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.edu.xukai.Student 用這種方式可以解決: Map<String, Class> classMap = new HashMap<String, Class>(); classMap.put("stus", Student.class); Teacher teacherBean = (Teacher) JSONObject.toBean(obj, Teacher.class, classMap); 其中map對象是teacherBean對象中各個屬性的類型,map額key是屬性每次,value是屬性的類型。 JSONArray.toArray(jsonArray, objectClass, classMap) JSONArray.toList(jsonArray, objectClass, classMap) 也支持這樣的方式。

 2. JSON 集合數據字符串轉對象集合 及 對象集合轉 JSON 字符串

import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;

// 集合轉 json
ArrayList<Student> list=new ArrayList<Student>();
StringWriter str=new StringWriter();
ObjectMapper objectMapper=new ObjectMapper();
objectMapper.writeValue(str, list);
System.out.println(str);

// json 轉對象集合
ObjectMapper mapper = new ObjectMapper();
List<Student> list = mapper.readValue(str.toString(),
        new TypeReference<List<Student>>() {});
        

 3.示例

public static void main(String[] args) {
    ArrayList<Student> list=new ArrayList<Student>();
    Student s1=new Student();
    s1.setName("leilei");
    s1.setAge(23);
    Student s2=new Student();
    s2.setName("leilei02");
    s2.setAge(23);
    list.add(s1);
    list.add(s2);
    
    StringWriter str=new StringWriter();
    
    ObjectMapper objectMapper=new ObjectMapper();
    try {
        objectMapper.writeValue(str, list);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }    
    System.out.println(str);
}

public class JsonToJavaBean {
    public static void main(String[] args) {
        String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";
        Student stu = null;
        List<Student> list = null;
        try {
            ObjectMapper objectMapper=new ObjectMapper();
            StudentList studentList=objectMapper.readValue(str, StudentList.class);
            
            list=studentList.getStudent();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        for(Student s:list){
            System.out.println(s.getName()+"   "+s.getAge());
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM