您的位置:首页 > 编程语言 > Java开发

Java Hour 42 fastjson

2013-11-17 22:23 281 查看
fastjson 神一样的存在,然后由于缺乏文档,很多功能完全不知道该怎么用。

42.1 字段的大小写问题

刚开始没想到会因为字段的大小写问题而导致反序列化json 失败。

@Override
public String execute() throws ClientProtocolException, IOException {
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpgets = new HttpGet("http://m.weather.com.cn/data/101210101.html");
HttpResponse response = httpclient.execute(httpgets);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instreams = entity.getContent();
result = convertStreamToString(instreams);
httpgets.abort();
}
WeatherInfoContainer wi = JSON.parseObject(result, WeatherInfoContainer.class);
setWeather(wi.getWeatherinfo());

return SUCCESS;
}


不过这个可以用@JSONField(name = "weatherinfo") 来解决,还算勉强凑合。

42.2 json 的格式问题

{"weatherinfo":{"city":"杭州"}}

我们得到的json 外面套了一层weatherinfo, 我完全找不到文档怎么去解析这种类型的json.

我只能傻逼一样的创建一个weatherinfoContainer 类。

不知道各位国际友人怎么解决这个问题的?

@Override
public String execute() throws ClientProtocolException, IOException {
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpgets = new HttpGet("http://m.weather.com.cn/data/101210101.html");
HttpResponse response = httpclient.execute(httpgets);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instreams = entity.getContent();
result = convertStreamToString(instreams);
httpgets.abort();
}

WeatherInfoContainer weatherInfoContainer = JSON.parseObject(result, WeatherInfoContainer.class);
setWeather(weatherInfoContainer.getWeatherinfo());

return SUCCESS;
}


setWeather(JSON.parseObject(result).getObject("weatherinfo", Weatherinfo.class));

进过查看API, 换了一种方式改进了。不知道有没有更加快捷的方式。

42.3 Java String 的转义问题

有时候需要输入的字符串中有很多的引号,这个时候C# 可以用@ 符号来实现转义,Java 里面不知道怎么搞起。

小结

fastjson 据说很快,但是由于缺乏说明文档,我只能说呵呵了,下次有需求的时候试用其他人推荐的其他版本的json 工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: