0

を通じて Web サイトからこの値を入手しましたHttpClient

[
    {
        "scout": "webdriver",
        "short_version": "4.3",
        "long_name": "iPad",
        "api_name": "ipad",
        "long_version": "4.3.",
        "automation_backend": "webdriver",
        "os": "Mac 10.4"
    },
    {
        "scout": "webdriver",
        "short_version": "5.0",
        "long_name": "Firefox",
        "api_name": "firefox",
        "long_version": "14",
        "automation_backend": "webdriver",
        "os": "Mac 10.5"
    },
    {
        "scout": "webdriver",
        "short_version": "4",
        "long_name": "Firefox",
        "api_name": "firefox",
        "long_version": "15",
        "automation_backend": "webdriver",
        "os": "Mac 10.6"
    },
    {
        "scout": "webdriver",
        "short_version": "5",
        "long_name": "Chrome",
        "api_name": "chrome",
        "long_version": "5.0.1.",
        "automation_backend": "webdriver",
        "os": "Mac 10.7"
    }
]

このデータをこの形式に変換したい:

[OS: {Mac10.4,Mac10.5}]

など、OS一覧

[{api_name: {firefox:{14,15}} }]

など、ブラウザとそのバージョンのリスト。

OS とブラウザのリストが長すぎます。json またはその他の方法を使用して解析する方法は?

4

2 に答える 2

1

json-smart ライブラリをご覧になることをお勧めします。軽量で高速です。( https://code.google.com/p/json-smart/ )

次に、次のようなものを書くことができます(単なる例):

    Map<String, List<String>> osMap = new HashMap<String, List<String>>();
    osMap.put("OS", new ArrayList<String>());

    Map<String, Map<String, List<String>>> apiNameMap = 
        new HashMap<String, Map<String, List<String>>>();
    apiNameMap.put("api_name", new HashMap<String, List<String>>());

    JSONArray ja = (JSONArray) JSONValue.parse(JSON_STRING);
    for (Object obj : ja) {
        JSONObject jsonObj = (JSONObject) obj;
        String os = (String) jsonObj.get("os");
        String apiName = (String) jsonObj.get("api_name");
        String longVersion = (String) jsonObj.get("long_version");

        // OS
        if (!osMap.get("OS").contains(os)) {
            osMap.get("OS").add(os);
        }

        // API
        if (!apiNameMap.get("api_name").containsKey(apiName)) {
            apiNameMap.get("api_name")
                    .put(apiName, new ArrayList<String>());
        }
        apiNameMap.get("api_name").get(apiName).add(longVersion);

    }

    System.out.println(JSONValue.toJSONString(osMap));
    System.out.println(JSONValue.toJSONString(apiNameMap));
于 2013-09-18T12:47:06.747 に答える