zoukankan      html  css  js  c++  java
  • JSON语言规范与Java中两种解析工具基本使用

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6652250.html 

        一:JSON语言规范

        一言以蔽之:“一个 :一个键值对,一个{}一个对象,一个[]一个数组”

        key:只能是string

        value:可以是string、number、boolean、null

        二:Jackson数据绑定方式操作JSON

        Jackson操作JSON主要用到两个类:JsonGenerator、objectMapper

        准备工作:创建objectMapper,并由objectMapper创建JsonGenerator

    ObjectMapper  objectMapper = new ObjectMapper(); 
    JsonGenerator  jsonGenerator=objectMapper.getJsonFactory()
    .createJsonGenerator(fileoutputStream, encoding);//通过文件流打开一个文本文档,并指明编码格式

        1:Java对象转JSON

       JavaBean、Map对象、list对象、数组对象转JSON

    jsonGenerator.writeObject(bean);
    或 objectMapper.writeValue(outputStream,bean);

     2:读取JSON字符串转换成Java对象、Map对象、List对象、数组

       1)读取JSON字符串转JavaBean

    ClassName bean= objectMapper.readValue(json_String, ClassName.class);//传一个class对象作为通过json字符串构造java对象的依据

        2)读取JSON字符串转List对象

    List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json_string, List.class);

       (注意:此处List中的泛型不能指定为某中JavaBean类似,只能用LinkedHashMap,因为泛型转换不能识别到集合中的对象类型)

        3)读取JSON字符串转数组

    ClassName[] arr = objectMapper.readValue(json_string, ClassName[].class);//同理,传递class对象作为解析JSON字符串的依据

        4)读取JSON字符串转Map对象

    Map<String, Map<String, Object>> maps = objectMapper.readValue(jsonstring, Map.class);

        三:Gson操作JSON

        1:Java对象转JSON

        1)简单转换(无格式)

    Gson gson=new Gson();
    String jsonstring=gson.toJson(bean);

        2)带格式转换:需要使用builder来生成Gson,通过builder来设定转换格式。

    GsonBuilder builder=new GsonBuilder();
    builder.setXXX();//改名、缩进等
    Gson gson=builder.create();
    String jsonstring=gson.toJson();

        3)Gson注释制定规则

        可以在JavaBean定义时,为某个字段添加Gson注释,指定转换为Json时该字段的别名、格式等。

        4)transient

        用transient修饰的字段不会被序列化,也就是说不会转换为Json字符串

        2:JSON解析

        1)简单转换:把Json数据解析为 String:String键值对

    Gson gson=new Gson();
    ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
    ClassName bean=gson.f romJson(reader,class);//解析文件中的Json数据

        2)带格式转换:根据数据格式解析Json字符串中键值对,使解析达到的对象的字段值符号定义时的类型

    GsonBuilder builder=new GsonBuilder();
    builder.setXXFormat("数据类型格式");//XX是一种数据类型,参数为该类型数据的格式。比如:Date类型。这样Json数据中符号该格式的内容解析出来就是XX类型而不是String。
    Gson gson=builder.create();
    ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
    ClassName bean=gson.f romJson(reader,class);//解析文件中的Json数据

        (注意:Java中集合类、数组,转换为Json时都是Json数组;而Json数组转换过来时,则自动根据数组名对应的类型来自动转换成集合类、Java数组

      

  • 相关阅读:
    有点忙啊
    什么是协程
    HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
    HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
    HDU 1210 Eddy's 洗牌问题(找规律,数学)
    HDU1214 圆桌会议(找规律,数学)
    HDU1215 七夕节(模拟 数学)
    HDU 1216 Assistance Required(暴力打表)
    HDU 1220 Cube(数学,找规律)
    HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6652250.html
Copyright © 2011-2022 走看看