首页 新闻 会员 周边 捐助

取出map中的键值对应的数组

0
[已解决问题] 解决于 2018-03-20 17:04

现在有一个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的话怎么取?

YAN_HUAXIANGMO的主页 YAN_HUAXIANGMO | 初学一级 | 园豆:189
提问于:2018-03-20 14:03
< >
分享
最佳答案
1
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));

        }         

} 
奖励园豆:5
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-03-20 14:12

不行啊,我在第二步得出的是[{“dig1”:“haha1”}]是一个数组对象,相当于你的map.get(x)得到的应该是:“[{“dig1”:“haha1”}]”这样的字符串,转化成map不成功啊。强转也不行,输出不了,你试试

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 15:12

@YAN_HUAXIANGMO: 你定义了:Map<String,Map<string,string>> map JSON.parseObject(arr);这个吗?

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-20 15:14

@Shendu.cc: Type mismatch: cannot convert from JSONObject to Map<String,Map<String,String>>如何这么写的话报上面这个错啊

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 15:32

@YAN_HUAXIANGMO: 你使用的json的包是什么?

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-20 15:39

@Shendu.cc: fastjson

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 15:39

@Shendu.cc: com.alibaba.fastjson.JSON

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 15:40

@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 | 园豆:2138 (老鸟四级) | 2018-03-20 16:21

@Shendu.cc: String arr = "{\'arr1\':[{\'dig1\':\'haha1\'}],\'arr2\':[{\'dig2\':\'haha2\'}]}";你的arr是数组了,我的还是一个对象,对象的键值对应的是一个数组,这个怎么办

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 16:32

@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 | 园豆:2138 (老鸟四级) | 2018-03-20 16:37

@Shendu.cc: 十分感谢,我博客园没有分,你有csdn号的话麻烦到这个地方答一下,分给你了https://bbs.csdn.net/topics/392343049?page=1#post-403116768

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 17:02

@YAN_HUAXIANGMO: 从这里可以看出,博客园的博问还是卧虎藏龙的。可以考虑来多来博客园的博问问问题。csdn的广告多的我恶心🤢。没有豆子的就没有豆子了,意思下就好了。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-20 17:07

@YAN_HUAXIANGMO: 大哥不对啊,我看你有202个豆子啊。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-20 17:27

@Shendu.cc: 可以给豆子吗,很少完博客园。。。。

YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 17:42

@YAN_HUAXIANGMO: 没事没事,我就开开玩笑。多来博客园玩玩,我们一起玩。

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-20 17:48
其他回答(1)
0

这个时候你需要下个gson.jar,几步就解决了

西红柿里没有番茄 | 园豆:645 (小虾三级) | 2018-03-20 14:44

给个代码看看,用gson我也不知道怎么弄啊,我现在能把字符串转成map,可是map里面还有数组啊,怎么把数组里面的值取出来,如果再把数组当成字符串取出来,我得有"\"才能再把它转换成第二个map。。。给个代码参考参考

支持(0) 反对(0) YAN_HUAXIANGMO | 园豆:189 (初学一级) | 2018-03-20 15:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册