json如何转换为java类型假如我现在从js中传到java中的一个参数形式为:[{id:10,name:yang},{id:11,
json如何转换为java类型
假如我现在从js中传到java中的一个参数形式为:
[{"id":10,"name":"yang"},{"id":11,"name":"chao"}]
我在java中得到这个数组,但是如何得到各个id和name的值呢。而且,我这个id和name并不是固定的,有可能是别的名字,比如myId,myName。
请高手指教!谢谢。
[最优解释]
String json = "{"id":10,"name":"yang","id":11,"name":"chao","id":12,"name":"jiang"}";
JSONObject object = JSONObject.fromObject(json);
Map<String, Object> map = new HashMap<String, Object>();
map = object;
for(String key : map.keySet()){
System.out.println("key="+key+" value="+map.get(key));
}
打印结果:
key=id value=[10,11,12]
key=name value=["yang","chao","jiang"]
希望能帮到你
[其他解释]因为你这个不是标准的json格式,我觉得
1、把[{"id":10,"name":"yang"},{"id":11,"name":"chao"}]先转化为标准json格式的list;
2、再对list进行遍历处理;
String object = "[{"id":10,"name":"yang"},{"id":11,"name":"chao"}]";
List<String> objects = new ArrayList<String>() ;
while(object.indexOf("}") > 0){
String str = object.substring(object.lastIndexOf("{"), object.lastIndexOf("}")+1);
object = object.substring(0, object.lastIndexOf("{"));
objects.add(str);
}
List<Map> listResult = new ArrayList<Map>();
for(String str: objects){
JSONObject json = JSONObject.fromObject(str);
listResult.add(json);
}
for(Map m: listResult)
System.out.println(m.toString());
处理后的结果是一个List<Map>
打印出来的结果是:
{"id":11,"name":"chao"}
{"id":10,"name":"yang"}
[其他解释]json转成 Map对象 可以不。 这个比较简单
[其他解释]可以用json.jar包解析json格式的内容。
要求字段不确定可以解析成object对象,在通过getXXX()方法取数据。
[其他解释]json.org去看看吧
[其他解释]http://www.cnblogs.com/moonvan/archive/2011/11/09/2242403.html
[其他解释]解析成 List<Map<String,Object>>
[其他解释][其他解释]JsonObject
apache提供了工具包,直接可以用
[其他解释]利用apache中的jsonlib包,主要利用JSONArray JSONObject
[其他解释]http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html
[其他解释]Gson也不错
[其他解释]肯定是先知道规则,才会去解析。
转换成一对一的关系就行了,具体key是什么就看规则了。
[其他解释]谢谢,你这个方法只是针对特定的id和name,但是,我现在要的结果是,id和name这个名字是不一定是这个名字的。如果用你推荐的方法,那每次还有判断前台传来的是什么(如果10个用户,传来的参数都是不一样的,那要定义10个相似的方法),这似乎不可取吧。
[其他解释]而且我的参数,不一定就是这有id和name两个属性的,属性的个数也是不定的。