谷歌JsonObject操作

Json对象是Name Value对(即子元素)的无序集合,相当于一个Map对象。JsonObject类是bantouyan-json库对Json对象的抽象,提供操纵Json对象的各种方法。本文就介绍如何操纵JsonObject类。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

Json对象是Name Value对(即子元素)的无序集合,相当于一个Map对象。JsonObject类是bantouyan-json库对Json对象的抽象,提供操纵Json对象的各种方法。本文就介绍如何操纵JsonObject类。

一、创建JsonObject实例

创建JsonObject实例有两类方法,一是利用超类Json的静态方法parseJsonText、parseJsonReader与parseJavaMap获取JsonObject实例,二是直接利用JsonObject类的构造方法创建JsonObject实例。

根据传入的参数不同,parseJsonText返回一个JsonObject实例或JsonArray实例,利用parseJsonText方法的示例代码如下:

Java代码

   
   
  1. String jsonText = "{'name1': 'value1', 'name2': 'value2'}";     
  2. JsonObject jobj = (JsonObject)Json.parseJsonText(jsonText);    

parseJsonText返回的是一个Json类变量,所以要使用强制类型转换。

parseJsonReader负责从Reader类型参数内读取Json文本流,然后转换为Json实例,与parseJsonText一样,返回值需要强制类型转换。

方法parseJavaMap直接返回JsonObject变量,不用类型转换,示例代码如下:

Java代码

   
   
  1. HashMap map = new HashMap();     
  2. map.put("nameA""valueA");      
  3. map.put("nameB""valueB");      
  4. JsonObject jobj = Json.parseJavaMap(map);   

如果Map内有复杂的对象需要解析,可以用parseJavaMap的重载版本parseJavaMap(Map, JsonParser)来处理(JsonParser的使用参考解析Json——Json类的静态方法的第五部分)。

JsonObject类的构造函数有四个重载版本:JsonObject()、JsonObject(int)、JsonObject(Map)与JsonObject(Map, JsonParser)。不带参数与带整型参数的重载版本都构造一个空的JsonObject实例,所不同的是带整型参数的重载版本能够指定JsonObject初始容量的大小,以避免不必要的重新分配内存。重载版本JsonObject(Map)与JsonObject(Map, JsonParser)的使用类似于Json类的静态方法parseJavaMap。

二、给JsonObject添加子元素

给JsonObject实例添加子元素调用方法add或addAll。bantouyan-json库规定,方法add与addAll都不能添加Name为null的子元素,也不能添加与已有子元素Name相同的子元素,否则会抛出异常。

方法add有七种重载版本,方法addAll有三种重载版本,分别使用于不同的情况。

三、变更JsonObject子元素的Value

要改变JsonObject子元素的Value可以调用方法set与setAll。这两个方法都忽略Name为null的子元素,如果存在Name相同的子元素,则更改这个子元素的Value,否则添加一个新的子元素。

方法set也有七种重载版本,addAll有三种重载版本,分别适用于不同的情况。

四、获取与检测JsonObject子元素

JsonObject的每个子元素的Value都是一个Json实例,可以用方法get(String)获取这个实例。至于这个实例的类型,除可以调用方法getType()获得外,还可以通过JsonObject对方法getType的重载版本getType(String)获取(String为子元素的Name)。

利用方法getString(String)可以获取指定Name的子元素Value的字符串值,如果子元素的Value是JsonPrimitive实例,则返回这个实例值对应的字符串(不带引号与转义符),否则返回对应的标准Json文本。

如果想获取子元素的Value所对应的boolean、double、long、JsonArray与JsonObject类型的值,则可以分别调用方法getBoolean(String)、getDouble(String)、getLong(String)、getJsonArray(String)与getJsonObject(String)。与getString方法不一样的是当子元素的Value无法转换为相应的类型时会抛出异常。方法canToBoolean(String)、canToDouble(String)、canToLong(String)、canToJsonArray(String)与canToJsonObject(String)可以检测是否可以转换为对应的类型。

以特定的类型获取子元素的Value时,方法canToXXX返回true并不表明子元素的Value就是所测试的类型。根据bantouyan-json库设计,如果子元素的Value的类型是INTEGER,则可以得到对应的double类型的值,如果类型时String,对于部分Value,可以得到对应的boolean、long、double类型的值。

五、确定JsonObject子元素是否存在

在获取子元素前可能无法确定JsonObject是否包含指定Name的子元素,要确定子元素存在,请调用方法containsName(String)。

六、删除JsonObject子元素

删除JsonObject的子元素调用方法remove(String),参数为要删除的子元素的Name。

七、获取JsonObject子元素相关的集合

与Map一样,JsonObject也是由无序的Name Value对构成,为此,JsonObject实现了三个方法用于获取子元素相关的集合。

entrySet(),返回由子元素的Name Value对构成的集合。

nameSet(),返回由子元素的Name构成的集合。

values(),返回由子元素的Value构成的集合。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包含以下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
Json是一种轻量级的数据交换格式,可用于存储和传输结构化数据。JsonObjectJson中的一种数据类型,它表示一个包含键值对的无序集合。 Google是一家全球知名的科技公司,拥有许多互联网产品和服务。在Android开发中,JsonObject类经常与Google的相关技术和库一起使用,用于处理和解析Json数据。 JsonObject类是Google提供的一个Android开发库中的一个类,用于在Android应用中创建、操作和解析Json数据。通过使用JsonObject,开发人员可以轻松地将Json数据转换为Java对象,并对其中的键值对进行增删改查操作。 在Android开发中,可以使用JsonObject类来解析从服务器获取的Json数据。通过使用JsonObject的相关方法,可以获取Json中特定键的值,并将其转换为合适的数据类型。此外,JsonObject还提供了一些用于操作Json数据的方法,如添加新的键值对、删除特定键值对等。 除了JsonObject之外,Google还提供了其他与Json相关的类和技术,如JsonArray和Gson。JsonArray用于表示一个包含多个JsonObject的有序集合,可用于处理复杂的Json数据。而Gson是Google开发的一个强大的Json解析库,可以方便地将Json数据转换为Java对象,并提供了许多便捷的方法和注解来简化解析过程。 综上所述,JsonObject是一种用于表示键值对集合的数据类型,而Google则是一家提供各种技术和库来处理Json数据的知名科技公司。在Android开发中,JsonObject经常与Google的相关技术和库一起使用,用于处理和解析Json数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值