zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/beenupper/p/2680177.html
Copyright © 2011-2022 走看看