? <pre>比如一个User对象,我想要一个框架可以直接转换成{id:1001,name='张三'} </pre>
<pre>就目前来看,Google的GSON组件不错,而且支持 JDK5 的泛型。
地址:<a href="http://code.google.com/p/google-gson/">http://code.google.com/p/google-gson/</a>
User 用户类:
public class User {
@Expose
private Long id;
@Expose
private String name;
public Long getId() {
??? return id;
}
public void setId(Long id) {
??? this.id = id;
}
public String getName() {
??? return name;
}
public void setName(String name) {
??? this.name = name;
}
}
// 测试 JavaBean 的转换
public class Test {
??? public static void main(String[] args) {
??????? User user = new User();
??????? user.setId(1001L);
??????? user.setName("张三");
??????? GsonBuilder builder = new GsonBuilder();
??????? // 不转换没有 @Expose 注解的字段
??????? builder.excludeFieldsWithoutExposeAnnotation();
??????? Gson gson = builder.create();
?????? ?
??????? String sUser = gson.toJson(user);
??????? System.out.println(sUser);
??????? // {"id":1001,"name":"张三"}
?????? ?
??????? // 将JSON字符串转换为 JavaBean
??????? User user2 = gson.fromJson(sUser, User.class);
??????? System.out.println(user2.getId() + ", " + user2.getName());
??????? // 1001, 张三
??? }
}
// 测试 HashMap 的转换
public class MapTest {
??? public static void main(String[] args) {
??????? User user1 = new User();
??????? user1.setId(1001L);
??????? user1.setName("张三");
??????? User user2 = new User();
??????? user2.setId(1002L);
??????? user2.setName("李四");
??????? Map userMap = new HashMap();
??????? userMap.put("user1", user1);
??????? userMap.put("user2", user2);
??????? GsonBuilder builder = new GsonBuilder();
??????? // 不转换没有 @Expose 注解的字段
??????? builder.excludeFieldsWithoutExposeAnnotation();
??????? Gson gson = builder.create();
?????? ?
??????? String sUserMap = gson.toJson(user, new TypeToken>(){}.getType());
??????? System.out.println(sUserMap);
??????? // {"user1":{"id":1001,"name":"张三"},"user2":{"id":1002,"name":"李四"}}
?????? ?
??????? // 将JSON字符串转换为 HashMap
??????? Map userMap2 = (Map)gson.fromJson(sUser, new TypeToken>(){}.getType());
??????? System.out.println(userMap2.get("user1").getName());
??????? // 张三
??? }
}
当然 GSON的JSON解析设置还不止这些,还有版本的注解、更改字段名称的注解等等。
上面给的网址上有具体的开发文档,和详细的例子。
如今 GSON 已被很多公司所采用,方便快捷。Google就是比较强大。&
详细解决方案
JAVA运用JSON之Google Gson
热度:812 发布时间:2012-08-31 12:55:03.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- (Struts2+JSON+Ajax) XMLHttpRequest ==500如何解决
- java web 登录次数限制,该如何解决
- json 解析有关问题
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- struts2-json中诠注@JSON(deserialize=false)是什么用?不是阻止JSON反序列化成JAVA对象吗?求解
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法