• Json数据类型与Java数据类型的关系 三


    Json数据类型与Java数据类型的关系

    首先要清晰java中字符串的表示,是将字符串用""(双引号)括起来。双引号里面为字符串的内容。
    特殊字符需要转义。而Json本身就是一堆字符串。

    所以java中表示json字符串应该如
    String i = "json字符串"

    如:
    Json数字:123
    java表示: String i="123";

    Json字符串:"123"
    java表示:String i="\"123\"";

    总结:千万别混淆: json字符串"abc",在java中表示为String i="\"abc\"",而不是String i="abc"。

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonParser;
    import com.google.gson.JsonPrimitive;
    
    /**
     * 一、4种基本类型 
     * 1.字符串(Strings) 如:"a"			类型:JsonPrimitive
     * 2.数字(numbers) 如:1,1.02		类型:JsonPrimitive
     * 3.布尔型(booleans) true false 	类型:JsonPrimitive
     * 4.Null值(null)  null				类型:JsonNull
     * 
     * 二、两种结构类型 
     * 1.对象 {"name":"zhangsan","age":18}	键为String,值为Json的任意数据类型之一。
     * 	  对象的键值对是无序的。			类型:JsonObject 
     * 2.数组 [1,2,3]	顺序排列的零个或多个Json数据类型	 类型:JsonArray
     * 
     */
    public class JsonTest {
    
    	//下面为Java字符串转换成json的两种可能
    	public static void main(String[] args) {
    		Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
    		//java字符串
    		String i="123";
    		
    		
    		//1.----Java字符串序列化为json
    		//输出json串 "123"
    		JsonPrimitive jsonPrimitive = new JsonPrimitive(i);
    		System.out.println(jsonPrimitive.toString());
    		
    		//2.----Java字符串序列化为json
    		//输出json串 123
    		System.out.println(new JsonParser().parse(i).toString());
    		
    		
    		/*为什么java字符串  i="123"  序列化为json串,会有两种不同的结果呢?
    		 * 
    		 * 情形一: 是将Java String类型 转换为对应的Json基本数据类型字符串。 所以输出"123"
    		 * 情形二: 是将Java String字符串被当作Json串,进行了解析。所以 i="123" 实际代表json串123。所以输出为123,即json数字类型。
    		 * */
    		
    		
    		//将i的值修改,前面加个英文字符
    		i="L123";
    		//1.----Java字符串序列化为json
    		//输出json串"L123"
    		JsonPrimitive jsonPrimitive2 = new JsonPrimitive(i);
    		System.out.println(jsonPrimitive2.toString());
    		
    		//2.----Java字符串序列化为json
    		//输出json串"L123"
    		System.out.println(new JsonParser().parse(i).toString());
    		
    		/*现在输出的结果都为 "L123" ,为什么?
    		 * 
    		 * 情形一:同上
    		 * 情形二: 是将Java String字符串被当作Json串,进行了解析。
    		 * 所以 i="L123" 实际代表json串L123。而L123 即不是数字,又不是字符串(字符串应为为"L123"),不是合法的Json格式。确将它合法化为Json字符串
    		 * 如果i="\"L123",才抛出Json语法错误异常
    		 * */
    	}
    }
    

    这里解析Json都用的是Google的Gson

  • 相关阅读:
    公司的CMS参数
    Kafka 如何保证消息可靠性
    我来了
    spring解决乱码
    mybatis反向工程
    Unicode控制字符
    功能跟进记录
    创建IDataProvider实例
    腾讯2016研发工程师笔试题36车 6跑道 没有计时器 最少要几次取前三
    .net mvc下拉列表DropDownList控件绑定数据
  • 原文地址:https://www.cnblogs.com/beenupper/p/2680177.html
Copyright © 2020-2023  润新知