json

json是轻量级数据交换类型

也可以使用阿里的fastjson.jar进行数据转换。

1.导入jar包
下载json和gson包
2.创建两个对象

package cn.newbeedaly.gson;

public class Person {

    private String name;
    private int age;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }

}
package cn.newbeedaly.gson;
/**
 * 严格遵守Bean规则的类
 * 
 * 1.   所有属性必须私有
 * 2.   所有属性必须拥有get,set方法
 * 3.   必须存在无参构造器
 */
public class Message {

    private int messageId;
    private String fromUser;
    private String toUser;
    private String messageContext ;
    private String createTime;
    public int getMessageId() {
        return messageId;
    }
    public void setMessageId(int messageId) {
        this.messageId = messageId;
    }
    public String getFromUser() {
        return fromUser;
    }
    public void setFromUser(String fromUser) {
        this.fromUser = fromUser;
    }
    public String getToUser() {
        return toUser;
    }
    public void setToUser(String toUser) {
        this.toUser = toUser;
    }
    public String getMessageContext() {
        return messageContext;
    }
    public void setMessageContext(String messageContext) {
        this.messageContext = messageContext;
    }
    public String getCreateTime() {
        return createTime;
    }
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
    public Message() {
        super();
        // TODO Auto-generated constructor stub
    }
}

3.对象转为json字符串

package cn.newbeedaly.gson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.junit.Test;

import com.google.gson.Gson;
/**
 * CSDN下载
 * 
 * GSON 生成 json字符串
 * 
 *  将一个对象转换为JSON格式
 */
public class GSONDemo {


    @Test
    public void gsonTest1() throws Exception {
        Person p = new Person();
        p.setName("张统");
        p.setSex("不详");
        p.setAge(8);

        //创建一个Gson对象
        Gson g = new Gson();

        String jsonStr = g.toJson(p);
        System.out.println(jsonStr);

        System.out.println("------------------");

        String[] arr = {"张三","李四","王二","麻子","张统"};
        jsonStr = g.toJson(arr);
        System.out.println(jsonStr);

        System.out.println("------------------");

        ArrayList<String> list = new  ArrayList<String>();
        for (int i = 0; i < 30; i++) {
            list.add("item"+i);
        }
        jsonStr = g.toJson(list);
        System.out.println(jsonStr);

        System.out.println("------------------");

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("id", 10001);
        map.put("person", p);
        map.put("arr", arr);
        jsonStr = g.toJson(map);
        System.out.println(jsonStr);

    }
    /**
     * Gson
     * 1.   将一个对象转换为JSON格式字符串
     *      String jsonStr = new Gson().toJson(obj);
     * 2.   将一个JSON格式字符串转换为对象
     *      Map<String,String> map = new Gson().fromJson(jsonStr,HashMap.class);
     *      Person p  = new Gson().fromJson(jsonStr,Person.class);
     *      ArrayList p  = new Gson().fromJson(jsonStr,ArrayList.class);
     * 
     */
    @Test
    public void gsonTest2(){
        Gson g = new Gson();
        String personJsonStr = "{\"name\":\"张统\",\"age\":8,\"sex\":\"不详\"}";
        Person p = g.fromJson(personJsonStr, Person.class);
        System.out.println(p.toString());
        System.out.println("------------");
        String arrJsonStr = "[\"张三\",\"李四\",\"王二\",\"麻子\",\"张统\"]";
        ArrayList<String> list = g.fromJson(arrJsonStr, ArrayList.class);
        for (int i = 0; i < list.size(); i++) {
            System.out.print("-->"+list.get(i));
        }
        System.out.println();
        System.out.println("-----------");

        String arrJsonStr2 = "[\"item0\",\"item1\",\"item2\",\"item3\",\"item4\",\"item5\",\"item6\",\"item7\",\"item8\",\"item9\",\"item10\",\"item11\",\"item12\",\"item13\",\"item14\",\"item15\",\"item16\",\"item17\",\"item18\",\"item19\",\"item20\",\"item21\",\"item22\",\"item23\",\"item24\",\"item25\",\"item26\",\"item27\",\"item28\",\"item29\"]";
        ArrayList<String> list2 = g.fromJson(arrJsonStr2, ArrayList.class);
        for (int i = 0; i < list2.size(); i++) {
            System.out.print("-->"+list2.get(i));
        }
        System.out.println();
        System.out.println("-----------");
        String mapJsonStr = "{\"arr\":[\"张三\",\"李四\",\"王二\",\"麻子\",\"张统\"],\"person\":{\"name\":\"张统\",\"age\":8,\"sex\":\"不详\"},\"id\":10001}";
        HashMap<String,Object> map = g.fromJson(mapJsonStr, HashMap.class);
        System.out.println(map.get("id"));
        ArrayList<String> list3 = g.fromJson(map.get("arr").toString(), ArrayList.class);
        for (int i = 0; i < list3.size(); i++) {
            System.out.print("-->"+list3.get(i));
        }
        System.out.println();
        System.out.println("-----------");
        Person p2 = g.fromJson(map.get("person").toString(), Person.class);
        System.out.println(p2);

    }

}

4.json字符串转为对象

package cn.newbeedaly.json;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import org.junit.Test;

public class JSONDemo {

    @Test
    public void jsonTest1() throws Exception {
//      描述注册
//      String jsonStr = "{\"responseCode\":200,\"message\":\"用户注册成功\"}";
        //描述聊天
        String jsonStr = "{\"responseCode\":200,\"message\":{\"messageId\":10002,\"toUser\":\"健康\",\"formUser\":\"张统\",\"messageContent\":\"爱老虎油\"},\"arr\":[\"哈哈\",\"呵呵\",\"嘿嘿\",\"嘻嘻\"]}";

        System.out.println(jsonStr);
        //将JSON字符串 转换为JSON对象
        JSONObject obj = new JSONObject(jsonStr);
        //通过key , 获取JSON对象中的int属性值
        int code = obj.getInt("responseCode");
        System.out.println(code);
        //通过key , 获取JSON对象中的String属性值
        //String message = obj.getString("message");
        //System.out.println(message);
        JSONObject message = obj.getJSONObject("message");
        System.out.println(message.getString("formUser")+"对"+message.getString("toUser")+"说:"+message.getString("messageContent"));
        System.out.println("------------------------------------------");
        JSONArray arr = obj.getJSONArray("arr");
        for (int i = 0; i < arr.length(); i++) {
            System.out.println(i+":"+arr.get(i));
        }
    }
    @Test
    public void jsonTest2(){
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("uname", "张三");
        map.put("upass", "123456");
        map.put("uid", 10001);

        JSONObject obj = new JSONObject(map);
        String jsonStr = obj.toString();
        System.out.println(jsonStr);
    }


}
Gson.jar
Gson一切通过对象进行工作
Gson g = new Gson();
g.toJson(对象); -- 将对象转换JSON字符串
g.fromJson(字符串,类类型); -- 将字符串转换成对应的类
Json转为集合时注意
不能传入简单的类类型,必须指定该泛型
错误:
    g.fromJson(字符串,List.class);
正确:
    g.fromJson("字符串",new TypeToKen<List<Person>(){}.getType());
Gson对于JSON数组的转换
    错误操作
    LinkedTreeMap map = g.fromJson("字符串",List.class);
    只能返回这样的类型。这样会影响原有的获取方式
正常操作
封装方法
public static <T> List<T> fromJsonArray(String json, java.lang.Class<T> clazz) {
        List<T> list = new ArrayList<T>();
        JsonArray array = new JsonParser().parse(json).getAsJsonArray();
        for (final JsonElement elem : array) {
            list.add(new Gson().fromJson(elem, clazz));
        }
        return list;
}
进行调用
    List<? extends Object> list = fomJsonArray(字符串,List中存放的对象的类类型);
格式
JSONObject {“”:””,......””:[],......””:{},......””:[{},......a,b,c],......””:{“”:””,......}}
JSONArray [“a”,”b”,”c”,......[1,2,3],......{“”:””,......},......]
js中JSON和String的转换
1 通过eval函数转换
2 通过JSON.parse()转换
    -- 获取值的方式直接.key即可
java解析与生成 - JSON.jar
生成:
    new JSONObject(对象).toString(); -- 转换为JSON的字符串
    new JSONObject(字符串); -- 转换为JSONObject的对象
解析:
    如果存在嵌套,必须先解析外层才能解析内层
JSONObject:
    jsonObj.getInt(key); -- 获取int成员
    jsonObj.getString(key); -- 获取String成员
    jsonObj.getJSONObject(key); -- 获取子对象
    jsonObj.getJSONArray(key); -- 获取子数组
JSONArray:
    jsonArr.getInt(index); -- 获取int成员
    jsonArr.getString(index); -- 获取String成员
    jsonArr.getJSONObject(index); -- 获取子对象
    jsonArr.getJSONArray(index); -- 获取子数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值