AmazingCounters.com

JSON的使用小结

  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
                 + "]";
    }
    

} 


问题:如果对象Student中包含有List<String> interest,怎么映射呢?对应的json中value是什么样式呢?如果您有相关的地址欢迎留言学习。

 

posted @ 2017-05-21 22:45  若谷先生  阅读(740)  评论(0编辑  收藏  举报