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 工具。

Java Hour 42 fastjson的更多相关文章

  1. Java安全之FastJson JdbcRowSetImpl 链分析

    Java安全之FastJson JdbcRowSetImpl 链分析 0x00 前言 续上文的Fastjson TemplatesImpl链分析,接着来学习JdbcRowSetImpl 利用链,Jdb ...

  2. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  3. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  4. Java安全之Fastjson反序列化漏洞分析

    Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fas ...

  5. Java安全之Fastjson内网利用

    Java安全之Fastjson内网利用 0x00 前言 在打Fastjson的时候,基本上都是使用JNDI注入的方式去打,也就是 JdbcRowSetImpl 链分析的链去打,但是遇到一些不出网的情况 ...

  6. java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析

    1.fastjson引入包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjso ...

  7. Java中让fastJson识别Colloction和Map中的泛型类

    由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map<K,V>这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON ...

  8. java基础42 File类的构造函数及其方法

    本文知识点(目录): 1.IO流(Input Output)    2.IO流技术的运用场景    3.File类的构造函数(方法)    4.File类的一些常用方法    5.实例(解析File类 ...

  9. Java基础/利用fastjson序列化对象为JSON

    利用fastjson序列化对象为JSON 参考博客:http://blog.csdn.net/zeuskingzb/article/details/17468079 Step1:定义实体类 //用户类 ...

随机推荐

  1. pthread_cancel

    #include <pthread.h> #include <stdio.h> #include<stdlib.h> #include <unistd.h&g ...

  2. mysql 查看 删除 日志操作总结(包括单独和主从mysql)

    我们可以在mysql的安装目录下看到mysql的二进制日志文件,如mysql-bin.000***等,很多人都不及时的处理,导致整个硬盘被塞满也是有可能的.这些是数据库的操作日志.它记录了我们平时使用 ...

  3. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  4. ccleaner注册码

    名称:Registered User 密钥:CBB4-FJN4-EPC6-G5P6-QT4C 先不要启动程序,然后断网注册.

  5. Java-java中的有符号,无符号操作以及DataInputStream

    1. 无符号和有符号 计算机中用补码表示负数,并且有一定的计算方式:另外,用二进制的最高位表示符号,0表示正数.1表示负数.这种说法本身没错,可是要有一定的解释,不然它就是错的,至少不能解释,为什么字 ...

  6. 不引用office动态库导出excel

    public class OutExcelReport { /// <summary> /// 把 DataSet 的数据导成 Excel /// </summary> /// ...

  7. sed 指令

    sed -e 's/:/ /g' 将待处理文本行中:替换为空格, s/A/B/g 是sed中的替换命令, 将A替换为B, 其中,A可以是正则表达式. g表示全部替换. sed 指令 瀏覽數 : 6,5 ...

  8. 导出Excel之Epplus使用教程2(样式设置)

    导出Excel之Epplus使用教程1(基本介绍) 导出Excel之Epplus使用教程2(样式设置) 导出Excel之Epplus使用教程3(图表设置) 导出Excel之Epplus使用教程4(其他 ...

  9. hibernate中的session缓存

    1.什么是session缓存? 在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 且没有 ...

  10. codeforces 258div2C Predict Outcome of the Game

    题目链接:http://codeforces.com/contest/451/problem/C 解题报告:三个球队之间一共有n场比赛,现在已经进行了k场,不知道每个球队的胜场是多少,如三个球队的胜场 ...