使用Gson中的JsonElement所遇到的坑

Google的gson.jar包在开发中经常使用,有一些细节的地方稍不注意就会踩到坑。这里介绍一下使用JsonElement取值所遇到的问题,避免以后再犯这种错误。
我们先看一个例子:

public static void main(String[] args) {
        JsonObject js = new JsonObject();
        js.addProperty("name", "phone");
        js.addProperty("price", 999);
        js.addProperty("type", "mi");

        System.out.println(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 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
使用Gson库可以很方便地解析JSON格式的字符串或文件。下面是一个简单的示例,展示如何读取JSON文件并解析其的内容。 首先,需要导入Gson库。可以通过Maven等构建工具来添加依赖,或者手动下载jar包并添加到项目。 假设我们有一个名为data.json的文件,其包含以下内容: ```json { "name": "John Doe", "age": 30, "email": "john.doe@example.com" } ``` 我们可以使用以下代码读取该文件并解析其的内容: ```java import com.google.gson.Gson; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class JsonReaderExample { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new FileReader("data.json")); Gson gson = new Gson(); Data data = gson.fromJson(br, Data.class); System.out.println(data); } catch (IOException e) { e.printStackTrace(); } } } class Data { String name; int age; String email; public String toString() { return "Name: " + name + "\nAge: " + age + "\nEmail: " + email; } } ``` 在上面的代码,我们首先读取文件并创建一个BufferedReader对象。然后,我们创建一个Gson对象,并使用fromJson()方法将文件内容解析为Data对象。最后,我们打印Data对象的内容。 需要注意的是,在上面的代码,我们使用了一个Data类来表示JSON文件的数据。这个类的属性名必须与JSON文件的键名一致,否则解析会失败。在这个例子,我们只需要三个属性:name、age和email。 运行上面的代码,将会输出以下内容: ``` Name: John Doe Age: 30 Email: john.doe@example.com ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值