JSON中存储的是key:value,其实在编程的时候我们会遇到很多都是key:value的形式。比如:map,java对象(一个对象的一个属性只会有一个值),数据库中key:value对应着里面存储的一个数据,redis的本质就是key:value。所以你会发现key:value很有用。
1.将任何形式的内容转换成key:value形式的字符串(观察输出),比如json文件。
{ "name": "Tom", "age" : 12, "book":{"1":"Math","2":"Chinese","3":"English"}, "interest" : ["football","basketball"], "student" : {"name" :"Tom","age":22,"book":"String"} }
到网上搜一下,有很多人都写了将.json文件转换成字符串的方式,再转换成JSONObject。目前只找到GSON,直接输入json文件的位置,直接输出一个类似于JSONObject的东西(还没仔细研究),其他的方法还没有找到。
2.将string转换成JSONObject。
package json;import java.awt.List;import java.util.ArrayList;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;public class TestJson { public static void main(String[] args) { //将JSON文件读取成字符串形式,目前还没有找到哪个好的方法直接转,网上都可以搜到。 //GSON可以直接装,但是GSON的包跟这里的包又不一样 Util fr = new Util(); String str = fr.ReadFile("src/json1.json"); //看看把json文件读取成字符串的形式。 System.out.println(str.toString()); //将字符串转换成JSONObject。通过JSONObject可以获取任何东西。 //还可以遍历 JSONObject student1 = JSON.parseObject(str); String name = (String) student1.get("name"); //获取的是字符串。 String book = student1.getString("book"); //可以将string变成JSONObject JSONObject bookJson = JSON.parseObject(book); System.out.println(book); //这里获取的是JSONObject JSONObject bookObj = student1.getJSONObject("book"); String b1 = bookObj.getString("1"); String b2 = bookObj.getString("2"); String b3 = bookObj.getString("3"); System.out.println(b1+","+b2+","+b3); String interest = student1.getString("interest"); JSONArray interestArr = student1.getJSONArray("interest"); String arr1 = interestArr.getString(0); String arr2 = interestArr.getString(1); System.out.println(arr1+","+arr2); //通过映射的方式。直接获得。 JSONArray inArr = student1.getObject("interest", JSONArray.class); //如果value值是一个对象,可以直接映射成一个对象。 Student stu = student1.getObject("student", Student.class); System.out.println(name); System.out.println(interest); System.out.println(stu.toString()); }}
package json;import java.util.List;public class Student { public Student() { } public Student(String name, Integer age, String book) { this.name = name; this.age = age; this.book = book; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getBook() { return book; } public void setBook(String book) { this.book = book; } private String name; private Integer age; private String book; @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", book=" + book + "]"; } }