0

containerFactory でデコード例を使用すると、次の出力が得られます。

[{DeviceType=foo, DeviceName=foo1, IPAddress=192.168.1.1, UserName=admin, Password=pw},     {DeviceType=foo, DeviceName=foo2, IPAddress=192.168.1.2, UserName=admin, Password=pw}]

これらは、entry.getValue() が呼び出されたときに出力されるエントリです。

これらのオブジェクトからデータを取得するにはどうすればよいですか?

たとえば、DeviceName の値を取得するにはどうすればよいでしょうか。

Map obj = (Map)parser.parse(new FileReader("example.yml"),containerFactory);

Iterator iter = obj.entrySet().iterator();

//Iterator iterInner = new Iterator();

while(iter.hasNext()){
    Map.Entry entry = (Map.Entry)iter.next();
    System.out.println(entry.getValue());                                
            }

            //System.out.println("==toJSONString()==");
            //System.out.println(JSONValue.toJSONString(json));

      } catch (FileNotFoundException e) {
            e.printStackTrace();
      } catch (IOException e) {
            e.printStackTrace();
      } catch(ParseException pe){
            System.out.println(pe);
          }

4

2 に答える 2

1

System.out.println(entry.getValue().getClass())値がどのクラスに含まれているか(またはデバッガーで調べて)、実際のクラスの値を見つけてみてください。出力から、それは次のように見えますList<Map<String, String>>

于 2012-02-14T18:44:49.330 に答える
0
//The innermost data is in a LinkedHashMap
//I hope this snippet helps someone
while(iter.hasNext)
    {
        LinkedList entry = (LinkedList)iter.next();
        LinkedList myList = new LinkedList();
        Map.Entry entry = (Map.Entry)iter.next();
        System.out.println(entry.getValue().getClass());
        myList = (LinkedList) (entry.getValue());
        System.out.println(myList);
        Iterator iterate = myList.iterator();
        while (iterate.hasNext())
        {
            LinkedHashMap entry2 = (LinkedHashMap)iterate.next();
            System.out.println(entry2.get("DeviceName"));

        }

}
于 2012-02-15T04:50:43.920 に答える