在做一个练习,访问别人的天气预报接口,读取JSON类型的返回值,存储在String类型的变量中,然后自己再做一个服务,将前面得到的变量,再经过JSON格式转换,作为自己服务的返回值。
采用的是Spring MVC3 ,经过ModelAndView的JSON转换,测试后返回的结果是
{"string":"{\"weatherinfo\":{\"city\":\"上海\",\"city_en\":\"shanghai\",\"date_y\":\"2013年5月1日\",\"date\":\"\",\"week\":\"星期三\",\"fchh\":\"18\",\"cityid\":\"101020100\",…………,\"weather1\":\"晴转多云\",\"weather2\":\"晴转多云\",\"weather3\":\"晴转多云\",\"weather4\":\"多云\",\"weather5\":\"阴\",\"weather6\":\"阴转小雨\",\"img1\":\"0\",\"img2\":\"1\",\"img3\":\"0\",\"img4\":\"1\",\"img5\":\"0\",\"img6\":\"1\",\"img7\":\"1\",\"img8\":\"99\",\"img9\":\"2\",\"img10\":\"99\",\"img11\":\"2\",\"img12\":\"7\",\"img_single\":\"1\",\"img_title1\":\"晴\",\"img_title2\":\"多云\",\"img_title3\":\"晴\",\"img_title4\":\"多云\",\"img_title5\":\"晴\",\"img_title6\":\"多云\",\"img_title7\":\"多云\",\"img_title8\":\"多云\",\"img_title9\":\"阴\",\"img_title10\":\"阴\",\"img_title11\":\"阴\",\"img_title12\":\"小雨\",\"img_title_single\":\"多云\",\"wind1\":\"东北风转东风3-4级\",\"wind2\":\"东南风3-4级\",\"wind3\":\"东南风3-4级\",\"wind4\":\"东南风3-4级\",\"wind5\":\"东南风3-4级\",\"wind6\":\"东南风3-4级\",\"fx1\":\"东北风\",\"fx2\":\"东风\",\"fl1\":\"3-4级\",\"fl2\":\"3-4级\",\"fl3\":\"3-4级\",\"fl4\":\"3-4级\",\"fl5\":\"3-4级\",\"fl6\":\"3-4级\",\"index\":\"舒适\",\"index_d\":\"建议着薄型套装或牛仔衫裤等春秋过渡装。年老体弱者宜着套装、夹克衫等。\",\"index48\":\"舒适\",\"index48_d\":\"建议着薄型套装或牛仔衫裤等春秋过渡装。年老体弱者宜着套装、夹克衫等。\",\"index_uv\":\"弱\",\"index48_uv\":\"弱\",\"index_xc\":\"适宜\",\"index_tr\":\"很适宜\",\"index_co\":\"舒适\",\"st1\":\"21\",\"st2\":\"12\",\"st3\":\"23\",\"st4\":\"13\",\"st5\":\"23\",\"st6\":\"14\",\"index_cl\":\"较适宜\",\"index_ls\":\"适宜\",\"index_ag\":\"易发\"}}"}
可以发现SpringMVC在最外层又包装了一层String,请问大家,能有什么好的办法解决吗?擦,文章内容 不能含有以下特殊字符: 那段给省略了Spring MVCJSONString

解决方案 »

  1.   

    怎么去看 SpingMVC的实现,如果把字符串指定为JSON类型,那视图还会进行二次转换吗?
      

  2.   

    这个没关系的,就算包了一层{stirng:""},他其实还是一段标准json格式。前端页面假如是jquery调用ajax方法,可以先在java里面转为json格式或者用JS格式化成json,JSON.parse()这个方法
      

  3.   

    你可以自己定义一个java weatherinfo对象如,WeatherInfo.java
    将json字符串先转换为 weatherinfo对象(可以用ObjectMapper.getInstance().xxx进行转换)
    @ResponseBody
    public WeatherInfo show(){
    WeatherInfo wi = new WeatherInfo();
                    return wi;
    }