锁定老帖子 主题:fastjson 发布正式版本1.0.1
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-23
楼主可以考虑放到 code.taobao.org 上面, 支持咱们的 淘蝌蚪
|
|
返回顶楼 | |
发表时间:2011-02-23
能讲一下与json-lib的优劣势吗
|
|
返回顶楼 | |
发表时间:2011-02-23
forchenyun 写道 能讲一下与json-lib的优劣势吗 这个 fastjson 速度是最快的 |
|
返回顶楼 | |
发表时间:2011-02-23
wenshao 写道 ccvcd 写道 关注fastjson有段时间了,很想使用,以前用json-lib,一直没有下定决心使用fastjson很重要的一点是,json-lib在生成json字符串的时候可以实现过滤对象属性,可fastjson里一直没有看到这方面的解决办法,是不是考虑实现这一特性呢??
这个功能是支持的!比如: public static class User { 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; } } User user = new User(); user.setId(123); user.setName("毛头"); JSONSerializerMap mapping = new JSONSerializerMap(); mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid"))); JSONSerializer serializer = new JSONSerializer(mapping); serializer.write(user); String jsonString = serializer.toString(); Assert.assertEquals("{\"uid\":123}", jsonString); 在上面的例子中,User类有两个字段,过滤了name字段,而且把id字段重命名为uid。 user.setName("毛头");好眼熟的昵称。。。 |
|
返回顶楼 | |
发表时间:2011-02-23
最后修改:2011-02-23
wenshao 写道 在上面的例子中,User类有两个字段,过滤了name字段,而且把id字段重命名为uid。 温少, 把id重命名为uid我看见. 过滤name是怎么过滤的? 莫非是 JSONSerializer serializer = new JSONSerializer(new JSONSerializerMap().put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid")))); 这里, 写几个, 就显示几个. 不写, 就全过滤了? |
|
返回顶楼 | |
发表时间:2011-02-23
wenshao 写道 ccvcd 写道 关注fastjson有段时间了,很想使用,以前用json-lib,一直没有下定决心使用fastjson很重要的一点是,json-lib在生成json字符串的时候可以实现过滤对象属性,可fastjson里一直没有看到这方面的解决办法,是不是考虑实现这一特性呢??
这个功能是支持的!比如: public static class User { 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; } } User user = new User(); user.setId(123); user.setName("毛头"); JSONSerializerMap mapping = new JSONSerializerMap(); mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid"))); JSONSerializer serializer = new JSONSerializer(mapping); serializer.write(user); String jsonString = serializer.toString(); Assert.assertEquals("{\"uid\":123}", jsonString); 在上面的例子中,User类有两个字段,过滤了name字段,而且把id字段重命名为uid。 public class JsonResult { private String message; private List results; public List getResults() { return results; } public void setResults(List obj) { this.results = obj; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } JsonResult 中的results是一个List,list中的对象有可能是 User对象,也可能是Group对象,如果我把 JsonResult对象生成json字符串,我该如果过滤呢,每次生成json字符串对象时,我只是知道一个可返回的属性列表, User时是uid,name;Group时是id,groupName等等, 现在用json-lib 很容易实现,使用 JsonConfig setJsonPropertyFilter 方法, 使用 mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid"))); 很难做Json的集中处理,总不能根据一个对象来写一段序列化配置吧。 |
|
返回顶楼 | |
发表时间:2011-02-23
Rooock 写道 wenshao 写道 在上面的例子中,User类有两个字段,过滤了name字段,而且把id字段重命名为uid。 温少, 把id重命名为uid我看见. 过滤name是怎么过滤的? 莫非是 JSONSerializer serializer = new JSONSerializer(new JSONSerializerMap().put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid")))); 这里, 写几个, 就显示几个. 不写, 就全过滤了? 是的,你猜对了! |
|
返回顶楼 | |
发表时间:2011-02-23
ccvcd 写道 wenshao 写道 ccvcd 写道 关注fastjson有段时间了,很想使用,以前用json-lib,一直没有下定决心使用fastjson很重要的一点是,json-lib在生成json字符串的时候可以实现过滤对象属性,可fastjson里一直没有看到这方面的解决办法,是不是考虑实现这一特性呢??
这个功能是支持的!比如: public static class User { 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; } } User user = new User(); user.setId(123); user.setName("毛头"); JSONSerializerMap mapping = new JSONSerializerMap(); mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid"))); JSONSerializer serializer = new JSONSerializer(mapping); serializer.write(user); String jsonString = serializer.toString(); Assert.assertEquals("{\"uid\":123}", jsonString); 在上面的例子中,User类有两个字段,过滤了name字段,而且把id字段重命名为uid。 public class JsonResult { private String message; private List results; public List getResults() { return results; } public void setResults(List obj) { this.results = obj; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } JsonResult 中的results是一个List,list中的对象有可能是 User对象,也可能是Group对象,如果我把 JsonResult对象生成json字符串,我该如果过滤呢,每次生成json字符串对象时,我只是知道一个可返回的属性列表, User时是uid,name;Group时是id,groupName等等, 现在用json-lib 很容易实现,使用 JsonConfig setJsonPropertyFilter 方法, 使用 mapping.put(User.class, new JavaBeanSerializer(User.class, Collections.singletonMap("id", "uid"))); 很难做Json的集中处理,总不能根据一个对象来写一段序列化配置吧。 明白你的意思了,考虑在1.0.2中实现,谢谢你指出这个问题。 |
|
返回顶楼 | |
发表时间:2011-02-23
int[] intArr = new int[] { 4, 2 }; String jsonstr = JsonWrap.beanToJsonString_2(intArr); System.out.println(jsonstr); 报:Exception in thread "main" com.alibaba.fastjson.JSONException: TODO ERROR at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:129) at com.alibaba.fastjson.parser.DefaultExtJSONParser.parseObject(DefaultExtJSONParser.java:160) at com.alibaba.fastjson.JSON.parseObject(JSON.java:120) at com.alibaba.fastjson.JSON.parseObject(JSON.java:130) at com.talent.platform.core.json.JsonWrap.jsonStringToBean_2(JsonWrap.java:188) at com.talent.platform.core.json.JsonWrap.main(JsonWrap.java:64) |
|
返回顶楼 | |
发表时间:2011-02-23
字段过滤的API,我觉得可以优化一下
|
|
返回顶楼 | |