日期:2014-05-18  浏览次数:20697 次

关于json转换的问题。
[{"i":0,"log":{"WTserverip":"232.32.32.2","date":"2013-05-24",
"gotoclass":"1232","servclass":"1","serverip":"2","state":"2","test1":""
,"test2":"","test3":"","test4":"","test5":"","time":"14:17:25","userip":"253.33.22.32","usernum":"543"}}


上面是java中list转换为json之后的字符串。
log的:后面对应的是一个类,
怎样在转换的时候,把WTserverip,date,gotoclass,servclass,都去掉,只留他们后面“:”的值?
如这样。
[{"i":0,"log":{"232.32.32.2","2013-05-24",
"1232","1","2","2",""
,"","","","","14:17:25","253.33.22.32","543"}}

------解决方案--------------------
引用:
JAVA
Map<String,Object> hashMap=new HashMap<String, Object>();
hashMap.put("type", "read");
hashMap.put("cparam","Hello!" );
Map<String,Object> map=new HashMap<String, Object>();
map.put("cparam", hashMap);
JSONArray result=JSONArray.fromObject(hashMap);
System.out.println(result.toString());
输出格式:[{"cparam":"Hello!","type":"read"}]


JS:

function timerSubmit(){ //定时检索后台串口返回数据
    $.post("getTimerBack.action",{}, //post提交
       function(data){   //后台返回数据
       data=eval('('+data+')'); //JSON转换格式
       data=data[0].cparam;
           });
}



不对。

你要在后台转换成第二种js的格式,应该不是太好做吧,因为不是标准的格式,应该是在前台处理的吧。
------解决方案--------------------
楼上的解决方法或许有效,但是不是最好的解决方案,我觉得应该先要问清楚为什么要把标准JSON里面的键给去掉。

 我看了楼主想转之后的JSON,类似 EXTJS 中 store 中的 grid加载数据的一种方法,其实它是提供了
2种JSON的格式 ,一种是 jsonObj 一种是 jsonArray;楼主想转成的应该是 JsonArray ,
    最好的解决方法不是想办法把一个obj 里面的键去掉,而是在你后台都JSON的时候就转成 jsonArray,那么出来的自然是没有键的,类似
['1','2','3'] 这样的;
 如果是用的struts 的话 在 xml里面配置好就可以了。如果是直接返回 那就 用 jsonArray.add 进去。
       如果楼主的数据源是 service里面返回的  list<Object>  这样的 ,那么就 写个 for 把便利这个List,然后 add 到jsonArray 里面 ,丢到页面就好了。