-
GsonBuilder Gson构造器,用于创建及配置Gson
方法 描述(大部分方法为链式调用) new GsonBuilder() 构建方法 setVersion(double versions) 设置版本 excludeFieldsWithModifiers(int… modifiers) 排除某些修饰符修饰的字段
modifiers为Modifier.PRIVATE等generateNonExecutableJson() 生成不可以用的Json字符串 excludeFieldsWithoutExposeAnnotation() 排除没有@Expose修饰的字段 serializeNulls() 序列化空值 enableComplexMapKeySerialization() 启用复杂map集合key键序列化器
通常和registerTypeAdapter方法一起用disableInnerClassSerialization() 禁用内部类序列化 setLongSerializationPolicy(LongSerializationPolicy policy) 设置Long类型序列化策略 setFieldNamingPolicy(FieldNamingPolicy namingConvention) 设置字段名命名策略 setFieldNamingStrategy(FieldNamingStrategy fieldNamingStrategy) 设置自定义字段名命名策略 setExclusionStrategies(ExclusionStrategy… strategies) 设置排除策略 addSerializationExclusionStrategy(ExclusionStrategy strategy) 设置序列化排除策略 addDeserializationExclusionStrategy(ExclusionStrategy strategy) 设置反序列化排除策略 setPrettyPrinting() 设置json格式化输出 setLenient() 设置宽松json disableHtmlEscaping() 取消HTML 转义的配置 setDateFormat(String pattern) 设置日期格式 registerTypeAdapter(Type type, Object typeAdapter) 注册类型适配器 registerTypeAdapterFactory(TypeAdapterFactory factory) 注册类型适配器工厂 registerTypeHierarchyAdapter(Class<?> baseType, Object typeAdapter) 注册类型层次结构适配器 serializeSpecialFloatingPointValues() 序列化特殊浮点值,例如
Float.POSITIVE_INFINITYcreate() 创建Gson对象 -
Gson
方法 描述 newBuilder() 获取Gson构建器 toJson(Object src) 对象转json字符串,
可指定Type类型
可为已有字符串赋值
可实现JsonElement转字符串toJsonTree(Object src) 对象转jsons树元素对象,
参数可添加Type类型fromJson(String json, Class classOfT) json字符串(流,json元素)转对象
类型设置可为Class,TypeserializeNulls() 判断是否序列化null值 excluder() 获取排除对象 fieldNamingStrategy() 获取字段命名策略 htmlSafe() 判断html是否安全 getAdapter(Class type) 获取适配器,
参数可为TypeTokengetDelegateAdapter(TypeAdapterFactory skipPast, TypeToken type) 获取代理适配器 newJsonWriter(Writer writer) 创建一个json字符流(写) newJsonReader(Reader reader) 创建一个json字符流(读) -
流对象(JsonWriter与JsonReader)
-
JsonWriter
方法 描述 JsonWriter(Writer out) 构造方法 setIndent(String indent) 设置缩进 setLenient(boolean lenient) 设置是否宽大 setHtmlSafe(boolean htmlSafe) 设置是否html安全 setSerializeNulls(boolean serializeNulls) 设置是否序列化null beginArray() 开始一个数组,添加 [ endArray() 结束一个数组,添加 ] beginObject() 开始一个对象,添加 { endObject() 结束一个对象,添加 } name(String name) 添加一个对象字段 value(String value) 添加一个字段值,可为各类数字类型
注:一个name方法后必跟一个value方法jsonValue(String value) 添加一个json字符串为字段值 nullValue() 添加一个null值 flush() 刷新流 close() 关闭流 -
JsonReader
方法 描述 JsonReader(Reader in) 构造方法 setLenient(boolean lenient) 设置缩进 beginArray() 开始数组解析 endArray() 结束数组解析 beginObject() 开始对象解析 endObject() 结束对象解析 hasNext() 是否有下一值 peek() 获取json令牌 nextName() 获取字段名 nextString() 获取string类型字段值 nextBoolean() 获取boolean类型字段值 nextNull() 获取null字段值 nextDouble() 获取double类型字段值 nextLong() 获取long类型字段值 nextInt() 获取int类型字段值 close() 关闭流 skipValue() 跳过当前值 toString() 转为字符串 getPath() 转为jsonPath
-
-
注解
注解 描述 @Expose 指定字段是否进行序列化及反序列化
serialize:是否序列化,默认为true
deserialize:是否反序列化,默认为true@SerializedName 字段重命名
value: 重命名
alternate:反序列化时备用字段。多个取最后一个的值@Since 版本控制,设置版本之后生效
value:版本号@Until 版本控制,设置版本之前生效
value:版本号@JsonAdapter 配置json适配器,类及字段上
value: 适配器类
nullSafe:为null是否安全,默认为true -
常量
-
LongSerializationPolicy Long类型序列化策略
常量 描述 DEFAULT 默认 STRING 字符串 -
FieldNamingPolicy 字段名命名策略
常量 描述 IDENTITY 同实体类字段名一致 UPPER_CAMEL_CASE 大驼峰 “AbcDef” UPPER_CAMEL_CASE_WITH_SPACES 带空格的大驼峰 “Abc Def” LOWER_CASE_WITH_UNDERSCORES 带_的小写字母 “abc_def” LOWER_CASE_WITH_DASHES 带-的小写字母 “abc-def” LOWER_CASE_WITH_DOTS 带.的小写字母 “abc.def” -
JsonToken
常量 描述 BEGIN_ARRAY 开始数组 END_ARRAY 结束数组 BEGIN_OBJECT 开始对象 END_OBJECT 结束对象 NAME 字段名 STRING 字符串类型的值 NUMBER 数字类型的值 BOOLEAN 布尔类型的值 NULL null的值 END_DOCUMENT 结束文档
-
-
示例
-
自定义序列化及反序列化适配器
public class MyTypeAdapter extends TypeAdapter<Person> { /** * 流式序列化(速度快),将序列化后的值写到流对象中 * Person为泛型,适配器作用与类时,可为该类类型;用于字段时为该字段类型 */ @Override public void write(JsonWriter out, Person value) throws IOException { out.beginObject(); //流式序列化成对象开始,生成{ out.name("id").value(value.getaDouble());//新增字段及值 out.endObject(); //流式序列化结束,生成} } /** * 反序列化,从json流对象中读取 */ @Override public Person read(JsonReader in) throws IOException { Person person=new Person(); in.beginObject(); //流式反序列化开始 in.endObject(); //流式反序列化结束 return person; } }
-
JsonReader解析json
InputStreamReader in=new InputStreamReader(new FileInputStream("D:\\demo\\cvs1\\123456.json")); JsonReader jsonWriter=new JsonReader(in); jsonWriter.beginObject(); while (jsonWriter.hasNext()) { String name = jsonWriter.nextName(); System.out.println(name); if(jsonWriter.peek().equals(JsonToken.BEGIN_ARRAY)){// jsonWriter.beginArray(); while (jsonWriter.hasNext()) {//获取数组中每个值 System.out.println(jsonWriter.nextString()); } jsonWriter.endArray(); }else{ System.out.println(jsonWriter.nextString()); } } jsonWriter.endObject();
-
json处理(Gson)
最新推荐文章于 2022-12-05 21:37:32 发布