json的解析

json的两种解析方式

​ 1)谷歌提供的gson;

​ Gson 是一个 Google 提供的一个 Java 库,可用于将 Java 对象转换为 JSON 表示。它也可以被用来将 JSON 字符串转换成一个等效的 Java 对象。

​ (1)从json格式转为字符串形式:获取需要的字符串;格式化为字符串

​ (2)从字符串格式转为json格式:

  • Gson 的 节点对象:

    • JsonElement : 所有的节点 都是 JsonElement 对象.

    • JsonPrimitive : 基本的 数据类型的 节点 对象, JsonElement 的子类.

      JsonNull : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类.

      JsonObject : 对象 数据类型的 节点 对象, JsonElement 的 子类.
      JsonArray : 数组 数据类型的 节点 对象, JsonElement 的 子类.

  • JsonElement 的取值:

    • JsonPrimitive : value 的 取值对应 java 的
    • int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigI nteger,Number
    • JsonObject : value 的取值对应 java 的 Object 对象.
    • JsonArray : value 的取值对应 java 的 List 及其子类对象.
      • 解析的步骤
      • 获得解析器
      • 获得根节点元素
      • 根据文档判断根节点属于什么类型的 Gson 节点对象
      • 取得节点下的某个节点的 value

​ 2)阿里巴巴提供的fastjson;

XML可扩展的标记语言

​ xml 由 html 发展而来,与 html 格式相似,但是比 html 严格。由于结构严谨导致有效数据少。

​ 写法和HTML样式一致,但是它仅仅关注数据本身,标记可扩展,即标记可以自定。xml 比 数据库占用的资源少,操作方便,用来存储简单的信息,现在主要用在程序的配置文件上(比如 web.xml) 。

​ 存储数据的两种方式:以文本内容或者以属性值的形式存储。

语法规范:

​ 1)必须有XML的文档声明

标识说明
<?XML声明开始字符
XML表示这是一份XML文件
version用来指定XML的版本,只有一个版本是1.0
standalone表示该文件是否是独立的,默认是yes
encoding指定文件的编码格式
?>xml声明结束字符

​ 2)必须仅有且仅有 一个根元素

​ 3)严格区分大小写

​ 4)属性值用引号,键值对用冒号隔开

​ 5)在一个元素中,一个属性只能出现一次

​ 6)空标记关闭

​ 7)元素正确嵌套

元素命名规则:

​ 1)、名称中可以包含字母、数字或者其他可见字符;
​ 2)、名称不能以数字开头;
​ 3)、不能以 XML/xml/Xml…开头;
​ 4)、名称中不能含空格;
​ 5)、名称中不能含冒号(注:冒号留给命名空间使用)

实体:

​ 1)内置的五中实体

​ 2)自定义实体

包含以下java源文件: com.google.gson.DefaultDateTypeAdapter.class com.google.gson.ExclusionStrategy.class com.google.gson.FieldAttributes.class com.google.gson.FieldNamingPolicy.class com.google.gson.FieldNamingStrategy.class com.google.gson.Gson.class com.google.gson.GsonBuilder.class com.google.gson.InstanceCreator.class com.google.gson.JsonArray.class com.google.gson.JsonDeserializationContext.class com.google.gson.JsonDeserializer.class com.google.gson.JsonElement.class com.google.gson.JsonIOException.class com.google.gson.JsonNull.class com.google.gson.JsonObject.class com.google.gson.JsonParseException.class com.google.gson.JsonParser.class com.google.gson.JsonPrimitive.class com.google.gson.JsonSerializationContext.class com.google.gson.JsonSerializer.class com.google.gson.JsonStreamParser.class com.google.gson.JsonSyntaxException.class com.google.gson.LongSerializationPolicy.class com.google.gson.TreeTypeAdapter.class com.google.gson.TypeAdapter.class com.google.gson.TypeAdapterFactory.class com.google.gson.annotations.Expose.class com.google.gson.annotations.SerializedName.class com.google.gson.annotations.Since.class com.google.gson.annotations.Until.class com.google.gson.internal.ConstructorConstructor.class com.google.gson.internal.Excluder.class com.google.gson.internal.JsonReaderInternalAccess.class com.google.gson.internal.LazilyParsedNumber.class com.google.gson.internal.LinkedTreeMap.class com.google.gson.internal.ObjectConstructor.class com.google.gson.internal.Primitives.class com.google.gson.internal.Streams.class com.google.gson.internal.UnsafeAllocator.class com.google.gson.internal.bind.ArrayTypeAdapter.class com.google.gson.internal.bind.CollectionTypeAdapterFactory.class com.google.gson.internal.bind.DateTypeAdapter.class com.google.gson.internal.bind.JsonTreeReader.class com.google.gson.internal.bind.JsonTreeWriter.class com.google.gson.internal.bind.MapTypeAdapterFactory.class com.google.gson.internal.bind.ObjectTypeAdapter.class com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.class com.google.gson.internal.bind.SqlDateTypeAdapter.class com.google.gson.internal.bind.TimeTypeAdapter.class com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.class com.google.gson.internal.bind.TypeAdapters.class com.google.gson.reflect.TypeToken.class com.google.gson.stream.JsonReader.class com.google.gson.stream.JsonScope.class com.google.gson.stream.JsonToken.class com.google.gson.stream.JsonWriter.class com.google.gson.stream.MalformedJsonException.class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值