用Java处理JSON 一

来源:互联网 发布:中国最新经济数据 编辑:程序博客网 时间:2024/06/06 03:22

用Java处理JSON 一

JSON是什么

网上看了一篇不错的文章数据类型和Json格式,里面引用了yaml的文档,对数据的结构类型做了归纳:

  • 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如”北京”这个单独的词
    • 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如”北京, 上海”
    • 第三种类型是映射(mapping),也就是一个名/值对(name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary), 比如”首都:北京”

刚好最近又一次做到JSON格式日志的解析,就把关于JSON的知识整理一下

JSON官网上对JSON的结构做了介绍,概括起来,就是对象数组两种形式:

  • 对象用大括号"{}"表示,对象就是所谓的映射
  • 数组用方括号"[]"表示,数组就是所谓的序列
  • 在编程语言中,只要有了数组(array)和对象(object)就能够储存一切数据了

用Java处理JSON

Java上被推荐的用来处理JSON格式数据的第三方库有gsonjackson,因为之前用gson用的稍微多一点,所以在库的选型上又一次偏向于gson(2.8.0)

gson库最原始的用法,就是根据JSON的两种数据类型(对象和数组),利用JsonObject类和JsonArray类手动处理数据中的每个元素:

  • JsonObject可以通过get("key").getAsXXX()获得相应类型的值, 通过addProperty("key", $value)设置相应元素的值
  • JsonArray可以通过get(index).getAsXXX()获得相应类型的值, 通过add($value)设置相应数组的一个值
  • 遇到JSON嵌套格式, 可以通过getAsJsonObject()getAsJsonArray()转换成子JSON对象子JSON数组进行处理

其他重要代码:

/* 将一条完整的信息(String)转化成JSON对象 */JsonObject jsonObject = new JsonParser().parse(messages).getAsJsonObject(); /* 将JSON对象转换成输出信息(String) */new Gson().toJson(jsonObject);
0 0