Java 之XML与JSON (JSON对象和JAVA对象(集合)相互转换)及(JSON和XML比较)

使用Gson直接把JSO数据转换成Java对象

public Name parserJSON(String data){
Gson gson=new Gson();
Name name = gson.fromJson(in, Name.class);//生成对象
return name;
}

使用Gson直接把JSON数组数据转换成Java对象

public List parserJSON(String data){
Gson gson=new Gson();
TypeToken<List> typeToken=new TypeToken<List>(){};
List list= gson.fromJson(in, typeToken.getType());
return list;
}

JSON和XML比较:
  • 1.JSON和XML的数据可读性基本相同
  • 2.JSON和XML同样拥有丰富的解析手段
  • 3.JSON相对于XML来讲,数据体积更小
  • 4.JSON与JavaScript的交互更加方便
  • 5.JSON对数据的描述性比XML差
  • 6.JSON的速度要远远快于XML
适合的场景
  • (1)数据传输:JSON比XMl更有优势
  • (2)存储数据:XML描述性更强
  • (3)XML通常用做配置文件(WEB)
package com.vince.json;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonToken;
import org.junit.Test;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
 * JSON和XML比较:
 * 1.JSON和XML的数据可读性基本相同
 * 2.JSON和XML同样拥有丰富的解析手段
 * 3.JSON相对于XML来讲,数据体积更小
 * 4.JSON与JavaScript的交互更加方便
 * 5.JSON对数据的描述性比XML差
 * 6.JSON的速度要远远快于XML
 *
 *适合的场景
 * (1)数据传输:JSON比XMl更有优势
 * (2)存储数据:XML描述性更强
 * (3)XML通常用做配置文件(WEB)
 */

/**
 * 使用Gson直接把JSO数据转换成Java对象
 * public Name parserJSON(String data){
 *   Gson gson=new Gson();
 *    Name name = gson.fromJson(in, Name.class);//生成对象
 *    return name;
 *    }
 *    使用Gson直接把JSON数组数据转换成Java对象
 *   public List<Name> parserJSON(String data){
 *   Gson gson=new Gson();
 *   TypeToken<List<Name>> typeToken=new TypeToken<List<Name>>(){};
 *   List<Name> list= gson.fromJson(in, typeToken.getType());
 *   return list;
 *   }
 *
 */
public class JSONDemo3 {
    /**
     * 把一个JSON对象转换成JAVA对象集合,或者把一个JAVA对象集合转换为JSON对象
     */
    @Test
    public void gson2(){
        Gson gson=new Gson();
        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/vince/json/names.json");
        InputStreamReader in=new InputStreamReader(is);
        TypeToken<List<Name>> typeToken=new TypeToken<List<Name>>(){};
        List<Name> list= gson.fromJson(in, typeToken.getType());
        System.out.println(list);

        String json = gson.toJson(list, typeToken.getType());
        System.out.println(json);
    }
    class MyTypeTokeb extends TypeToken<List<Name>>{

    }
    /**
     * 生成一个对象
     * 把一个JSON对象转换成JAVA对象,或者把一个JAVA对象转换为JSON对象
     */
    @Test
    public void gson1(){
        Gson gson=new Gson();
        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/vince/name.json");
        InputStreamReader in=new InputStreamReader(is);
        Name name = gson.fromJson(in, Name.class);//生成对象
        System.out.println(name);

        String json = gson.toJson(name); //
        System.out.println(json);
    }


    @Test
    public void createJSON(){
        List<Name> list=new ArrayList<>();
        list.add(new Name("vince","ma","1354996@qq.ccom"));
        list.add(new Name("jack","wang","jack456@qq.com"));
        JsonArray array=new JsonArray();//创建数组
        for (Name n:list){
            JsonObject obj=new JsonObject();
            obj.addProperty("firstName",n.getFirstName());
            obj.addProperty("lastName",n.getLastName());
            obj.addProperty("email",n.getEmail());
            array.add(obj);
        }
        System.out.println(array.toString());
    }
}

测试用例

names.json

[
    {"firstName":"Vince","lastName":"Ma","email":"987456159@qq.com"},
    {"firstName":"Similar","lastName":"Lin","email":"88886666@qq.com"}
]

name。json

    {"firstName":"Vince","lastName":"Ma","email":"987456159@qq.com"},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值