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数组

      

  • 相关阅读:
    了解外界的窗口
    博客添加卡通精灵
    LINUX chage 命令 以及常用参数
    Linux系统 端口知识以及相关监听工具
    Linux 常用命令之cp
    树莓派的知识分享
    ghost一键备份还原工具使用指南
    使用rsync在Windows(服务端)与Linux (客户端)之间的同步
    制作linux 随身碟
    白嫖!1000+个常用的Linux命令!
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6652250.html
Copyright © 2011-2022 走看看