现在有一个String字符串,json格式,这样
String arr = {\'arr1\':[{\'dig1\':\'haha1\'}],\'arr2\':[{\'dig2\':\'haha2\'}]}
我的想法这样:
//第一步,先把字符串转换为map,这个时候map是{“arr1”:[{“dig1”:“haha1”}],“arr2”:[{“dig2”:'haha2”}]}
Map<String,Object> map = JSON.parseObject(arr);
//第二步,取出arr键值
for(Object key:map.keySet()){
//这里打印是:[{“dig1”:“haha1”}]和[{“dig2”:'haha2”}]
System.out.println(map.get(key));
//第三步,我要取出dig1和dig2的值haha1和haha2的话怎么取?
}
//第三步,我要取出dig1和dig2的值haha1和haha2的话怎么取?
Map<String,Map<string,string>> map JSON.parseObject(arr); for(string x:map.keySet()) { Map<string,string> m = map.get(x); for(string y:m.keySet()) { //要取出dig1和dig2的值haha1和haha2的话怎么取? System.out.println(y); System.out.println(m.get(y)); } }
不行啊,我在第二步得出的是[{“dig1”:“haha1”}]是一个数组对象,相当于你的map.get(x)得到的应该是:“[{“dig1”:“haha1”}]”这样的字符串,转化成map不成功啊。强转也不行,输出不了,你试试
@YAN_HUAXIANGMO: 你定义了:Map<String,Map<string,string>> map JSON.parseObject(arr);这个吗?
@Shendu.cc: Type mismatch: cannot convert from JSONObject to Map<String,Map<String,String>>如何这么写的话报上面这个错啊
@YAN_HUAXIANGMO: 你使用的json的包是什么?
@Shendu.cc: fastjson
@Shendu.cc: com.alibaba.fastjson.JSON
@YAN_HUAXIANGMO:
public static void main(String[] args) { // write your code here // HashMap<String,HashMap<String,String>> m = new HashMap<>(); String arr = "[{\'arr1\':{\'dig1\':\'haha1\'},\'arr2\':{\'dig2\':\'haha2\'}}]"; JSONArray array = JSON.parseArray(arr); for(int i=0;i<array.size();i++) { JSONObject job = array.getJSONObject(i); for(String key:job.keySet()) { JSONObject j =job.getJSONObject(key); for(String key2: j.keySet()) { System.out.println(key2); System.out.println(j.getString(key2)); } } } System.out.println("ok"); }
没有用Map,我把你的str改了一下。
@Shendu.cc: String arr = "{\'arr1\':[{\'dig1\':\'haha1\'}],\'arr2\':[{\'dig2\':\'haha2\'}]}";你的arr是数组了,我的还是一个对象,对象的键值对应的是一个数组,这个怎么办
@YAN_HUAXIANGMO: 不好意思,我理解错了,这是更新之后的代码
public static void main(String[] args) { // write your code here // HashMap<String,HashMap<String,String>> m = new HashMap<>(); String arr = "{\'arr1\':[{\'dig1\':\'haha1\'}],\'arr2\':[{\'dig2\':\'haha2\'}]}"; JSONObject array = JSON.parseObject(arr); for(String k:array.keySet()) { JSONArray job = array.getJSONArray(k); for(int i=0;i<job.size();i++) { JSONObject j =job.getJSONObject(i); for(String key:j.keySet()) { System.out.println(key); System.out.println(j.getString(key)); } } } System.out.println("ok"); }
@Shendu.cc: 十分感谢,我博客园没有分,你有csdn号的话麻烦到这个地方答一下,分给你了https://bbs.csdn.net/topics/392343049?page=1#post-403116768
@YAN_HUAXIANGMO: 从这里可以看出,博客园的博问还是卧虎藏龙的。可以考虑来多来博客园的博问问问题。csdn的广告多的我恶心🤢。没有豆子的就没有豆子了,意思下就好了。
@YAN_HUAXIANGMO: 大哥不对啊,我看你有202个豆子啊。
@Shendu.cc: 可以给豆子吗,很少完博客园。。。。
@YAN_HUAXIANGMO: 没事没事,我就开开玩笑。多来博客园玩玩,我们一起玩。
这个时候你需要下个gson.jar,几步就解决了
给个代码看看,用gson我也不知道怎么弄啊,我现在能把字符串转成map,可是map里面还有数组啊,怎么把数组里面的值取出来,如果再把数组当成字符串取出来,我得有"\"才能再把它转换成第二个map。。。给个代码参考参考