Json基础教程
Jackson教程
- Jackson介绍
- Jackson入门程序
- Jackson ObjectMapper实现JSON实际的读/写
- Jackson对象序列化/反系列化
- Jackson数据绑定
- Jackson JSON映射到任何Java对象
- Jackson使用具体的Java对象和类型强制转换到JSON使用
- Jackson树模型JsonNode
- Jackson流式API JsonGenerator、JsonParser
Gson教程
开源项目
知识点
相关文章
更多最近更新
更多Google Gson库的主要操作类Gson详解
2019-04-27 12:32|来源: 网路
Gson是Google Gson库的主要操作类。 它提供了将Java对象转换为匹配的JSON结构的功能,反之亦然。 Gson首先使用GsonBuilder
构建,然后使用toJson(Object)
或fromJson(String,Class)
方法读取/写入JSON构造。
类声明
以下是com.google.gson.Gson
类的声明 -
public final class Gson extends Object
构造函数
编号 | 构造函数 | 说明 |
---|---|---|
1 | Gson() |
用默认配置构造一个Gson 对象。 |
类方法
编号 | 方法 | 描述 |
---|---|---|
1 | <T> T fromJson(JsonElement json, Class<T> classOfT) |
此方法将从指定分析树读取的Json反序列化为指定类型的对象。 |
2 | <T> T fromJson(JsonElement json, Type typeOfT) |
此方法将从指定分析树读取的Json反序列化为指定类型的对象。 |
3 | <T> T fromJson(JsonReader reader, Type typeOfT) |
从reader 中读取下一个JSON值并将其转换为typeOfT 类型的对象。 |
4 | <T> T fromJson(Reader json, Class<T> classOfT) |
此方法将从指定Reader 读取的Json反序列化为指定类的对象。 |
5 | <T> T fromJson(Reader json, Type typeOfT) |
此方法将从指定reader 读取的Json反序列化为指定类型的对象。 |
6 | <T> T fromJson(String json, Class<T> classOfT) |
此方法将指定的Json反序列化为指定类的对象。 |
7 | <T> T fromJson(String json, Type typeOfT) |
此方法将指定的Json反序列化为指定类型的对象。 |
8 | <T> TypeAdapter<T> getAdapter(Class<T> type) |
返回type 的类型适配器。 |
9 | <T> TypeAdapter<T> getAdapter(TypeToken<T> type) |
返回type 的类型适配器。 |
10 | <T> TypeAdapter<T> getDelegateAdapter(TypeAdapterFactory skipPast, TypeToken<T> type) |
此方法用于获取指定类型的备用类型适配器。 |
11 | String toJson(JsonElement jsonElement) |
将JsonElements 树转换为其等效的JSON表示形式。 |
12 | void toJson(JsonElement jsonElement, Appendable writer) |
为JsonElements 树写出等价的JSON。 |
13 | void toJson(JsonElement jsonElement, JsonWriter writer) |
将jsonElement 的JSON写入writer 。 |
14 | String toJson(Object src) |
此方法将指定的对象序列化为其等效的Json表示形式。 |
15 | void toJson(Object src, Appendable writer) |
此方法将指定的对象序列化为其等效的Json表示形式。 |
16 | String toJson(Object src, Type typeOfSrc) |
此方法将指定对象(包括泛型类型的对象)序列化为其等效的Json表示形式。 |
17 | void toJson(Object src, Type typeOfSrc, Appendable writer) |
此方法将指定对象(包括泛型类型的对象)序列化为其等效的Json表示形式。 |
18 | void toJson(Object src, Type typeOfSrc, JsonWriter writer) |
将typeOfSrc 类型的src 的JSON表示写入writer 。 |
19 | JsonElement toJsonTree(Object src) |
此方法将指定对象序列化为与JsonElements树相同的表示形式。 |
20 | JsonElement toJsonTree(Object src, Type typeOfSrc) |
此方法将指定对象(包括泛型类型的对象)序列化为与JsonElements 树相同的表示形式。 |
21 | String toString() |
转化为字符串的形式。 |
继承的方法
这个类继承了以下类的方法 -
java.lang.Object
示例
文件:GsonTester.java -
import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class GsonTester { public static void main(String[] args) { String jsonString = "{\"name\":\"Maxsu\", \"age\":24}"; GsonBuilder builder = new GsonBuilder(); builder.setPrettyPrinting(); Gson gson = builder.create(); Student student = gson.fromJson(jsonString, Student.class); System.out.println(student); jsonString = gson.toJson(student); System.out.println(jsonString); } } class Student { private String name; private int age; public Student(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "Student [ name: "+name+", age: "+ age+ " ]"; } }
执行上面示例代码,得到以下结果 -
{ "name" : "Maxsu", "age" : 24 }
相关问答
更多-
冲突的GSON库(Conflicting GSON libs)[2024-01-26]
Millennial实际上是通过重命名内部GSON库来修复SDK 5.0.1版本(将于下周发布,等待一些额外的质量保证)。 Millennial SDK未经修改使用GSON 2.2.2版。 你可以在MMSDK.jar中使用GSON,或者,如果绝对必要的话,可以使用Millennial的JAR,并删除“com / google / gson /”目录并重新启动它。 像往常一样,您也可以直接与Millennial联系: https : //tools.mmedia.com/user/supportDevPort ... -
org.immutables:gson不是Gson的完整副本,它只是一个允许你将org.immutables库与Google的Gson一起使用的适配器。 The org.immutables:gson isn’t a full copy of Gson, it’s just an adapter that lets you use the org.immutables library with Google’s Gson.
-
确保将gson.jar放在libs目录中。 从ADT17开始,所有外部图书馆罐子都必须去那里。 好消息是你只需将它们放在那里,工具就可以将它们添加到项目中。 哦,该目录需要与src和assets等处于同一级别。 Make sure you put the gson.jar in the libs directory. As of ADT17 all external library jars must go there. The good news is you just drop them in ther ...
-
Gson StackOverflowError(Gson StackOverflowError)[2022-01-20]
Gson无法处理序列化数据中的循环引用。 你有机会。 解决这个问题,你已经解决了问题。 I created an issue for this on the google code site. http://code.google.com/p/google-gson/issues/detail?id=488 -
未找到Gson Type类错误(Gson Type class not found Error)[2021-12-27]
添加导入语句 import java.lang.reflect.Type; 它是java语言的一部分,而不是来自外部库。 尝试使用自动导入快捷方式。 用于日食(Ctrl + Shift + O) 。 对于netbeans我不确定可能是(Ctrl + Shift + I) Add import statement import java.lang.reflect.Type; Its part of java language, not from external libraries. Try to use ... -
来自Gson用户指南 : 如果字段标记为瞬态(默认情况下),则忽略该字段,并且不包括在JSON序列化或反序列化中。 ... 默认情况下,如果将字段标记为瞬态,则会将其排除。 同样,如果某个字段标记为“静态”,则默认情况下会将其排除。 因此,解决问题的方法只是将logger标记为瞬态或静态,例如: transient Logger logger = Logger.getRootLogger(); 这样,变量将从序列化和反序列化中排除,并且您不会得到该错误。 From the Gson User Guide: ...
-
向类添加一个空构造函数,因为这只会用于设置值,如果上下文未初始化,这不会导致任何问题 public UserValues() { } add an empty constructor to the class as this will only be used to set values this should not cause any issues if the context is not initialised public UserValues() { }
-
GSON“NoClassDefFoundError com / google / gson / Gson”(GSON “NoClassDefFoundError com/google/gson/Gson”)[2023-06-16]
我相信你把javac和java参数顺序混淆了。 语法是: javac你可以做到这两点。 然而,使用JsonWriter将提供更好的性能:输出可以流式传输到文件中,而不是在将整个输出写入文件之前将其映射到内存中。 使用BufferedWriter : BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile)); Gson gson = new Gson(); gson.toJson(obj, new JsonWriter(bw)); // Write to file using BufferedWrit ...JsonSerializer是序列化Object的字段,而不是对象本身。 但是,您传递的对象已经告诉Gson要序列化。 下列 @Override public JsonElement serialize(ControlTransaction ctr, Type type, JsonSerializationContext context) { return context.serialize(ctr, type); } 相当于 @Override public JsonElemen ...