今天给各位分享gson的知识,其中也会对gson门禁密码重置进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Android存储文件通常可以用SharedPreferences、SQLite、Content Provider和File,但是SharedPreferences只支持简单的key-value,
通常,如果要存储一个对象,可以先把它序列化,然后用输入输出流存进file文件
另一个我比较喜欢的方式是:
写:先把一个对象用gson解析成json字符串(使用gson的toJson函数),然后当成一个value写进SharedPreferences里面
读:读取出来的时候就再次用gson把json解析成对象(使用gson的fromJson函数)
参考:
Android中的JSON详细总结
怎样使用Gson 解析 (deserialize) json字符串
Gson简要使用笔记
代码实现:
使用Google的Gson实现对象和json字符串之间的转换
需要gson-1.4.jar
1.JsonUtil.java
Java代码
package com.snail.json;
import java.lang.reflect.Type;
import com.google.gson.Gson;
/**
* Java对象和JSON字符串相互转化工具类
* @author penghuaiyi
* @date 2013-08-10
*/
public final class JsonUtil {
private JsonUtil(){}
/**
* 对象转换成json字符串
* @param obj
* @return
*/
public static String toJson(Object obj) {
Gson gson = new Gson();
return gson.toJson(obj);
}
/**
* json字符串转成对象
* @param str
* @param type
* @return
*/
public static T T fromJson(String str, Type type) {
Gson gson = new Gson();
return gson.fromJson(str, type);
}
/**
* json字符串转成对象
* @param str
* @param type
* @return
*/
public static T T fromJson(String str, ClassT type) {
Gson gson = new Gson();
return gson.fromJson(str, type);
}
}
2. Person.java
Java代码
package com.snail.json;
public class Person {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3. Test.java
Java代码
package com.snail.json;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.google.gson.reflect.TypeToken;
public class Test {
/**
* 一般对象的转换
*/
public static void objectToJson(){
Person person = new Person();
person.setId(1);
person.setName("one");
//javabean转换成json字符串
String jsonStr = JsonUtil.toJson(person);
System.out.println(jsonStr);
//json字符串转换成javabean
Person newPerson = JsonUtil.fromJson(jsonStr, Person.class);
System.out.println(person == newPerson);
System.out.println(newPerson.getId()+","+newPerson.getName());
}
/**
* 复合结构数据转换(List)
*/
public static void listToJson(){
Person person1 = new Person();
person1.setId(1);
person1.setName("one");
Person person2 = new Person();
person2.setId(2);
person2.setName("two");
ListPerson list = new ArrayListPerson();
list.add(person1);
list.add(person2);
//javabean转换成json字符串
String jsonStr = JsonUtil.toJson(list);
System.out.println(jsonStr);
//json字符串转换成javabean对象
ListPerson rtn = JsonUtil.fromJson(jsonStr, new TypeTokenListPerson(){}.getType());
for(Person person : rtn){
System.out.println(person.getId()+","+person.getName());
}
}
/**
* 复合结构数据转换(Map)
*/
public static void mapToJson(){
Person person1 = new Person();
person1.setId(1);
person1.setName("one");
Person person2 = new Person();
person2.setId(2);
person2.setName("two");
MapInteger,Person map = new HashMapInteger,Person();
map.put(person1.getId(), person1);
map.put(person2.getId(), person2);
//javabean转换成json字符串
String jsonStr = JsonUtil.toJson(map);
System.out.println(jsonStr);
//json字符串转换成Map对象
MapInteger,Person rtn = JsonUtil.fromJson(jsonStr, new TypeTokenMapInteger,Person(){}.getType());
for(EntryInteger, Person entry : rtn.entrySet()){
Integer key = entry.getKey();
Person newPerson = entry.getValue();
System.out.println("key:"+key+","+newPerson.getId()+","+newPerson.getName());
}
}
public static void main(String[] args) {
objectToJson();
System.out.println("****************************");
listToJson();
System.out.println("****************************");
mapToJson();
}
}
你的json数据是{result:[]}这种格式的对象并不是数组 ,所以他会报错
用Result ps = ... 试试。
你好
关于jackson和gson有什么区别(json解析性能比较)
经过有经验网友的测试:
jackson的性能几乎是gson的10倍,而且随着数据的增长,jackson的耗时也都很平稳,而gson则耗时增长明显,最后直接OOM了。
至于为什么jackson性能这么好,我也没有细究,可能是由于jackson采用流的处理方式吧。
希望对你有帮助
gson的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于gson门禁密码重置、gson的信息别忘了在本站进行查找喔。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签: #gson
相关文章