-1

我知道要求做某事是不好的,但这是我第一次被困在 java 中。最近我开始学习java,对于我的小工具,我需要阅读这个json字符串。

半天时间我都在搜索并尝试让事情顺利进行,并创建了 json-simple。

但我不能这样做。请帮忙。

例如,只需将 steamid 和 communityvisibilitystate 检索到字符串

String steamid = ...;
String communityvisibilitystate = ...;

如果你有更好的解决方案不使用 json-simple 发布它

{
"response": {
    "players": [
        {
            "steamid": "76561198777777777",
            "communityvisibilitystate": 3,
            "profilestate": 1,
            "personaname": "777777",
            "lastlogoff": 7777777777,
            "profileurl": "http://steamcommunity.com/profiles/76561198777777777/",
            "avatar": "http://media.steampowered.com/steamcommunity/public/images/avatars/16/777777777.jpg",
            "avatarmedium": "http://media.steampowered.com/steamcommunity/public/images/avatars/16/777777777_medium.jpg",
            "avatarfull": "http://media.steampowered.com/steamcommunity/public/images/avatars/16/777777777_full.jpg",
            "personastate": 0,
            "primaryclanid": "103582797777777777",
            "timecreated": 7777777777
        }
    ]

}
}
4

4 回答 4

2

1:您的完整响应是 JSON OBJECT

2:如果有任何元素写成

"some key name " : { " some value " }

这是一个 JSON 对象

3:如果有任何元素被写成

 "some key name " :  " some value " 

这是您可以通过的 json 对象中的值

jsonObject.getString("key name")

4:如果任何元素被写成

"some key name " : [ " some value " ]

那么这是一个 JSON 数组,您必须将其放入 JSON ARRAY 中,然后通过

jsonObject.getJSONARRAY("key name for JSON ARRAY IN RESPONSE ")

然后你可以遍历 JSON ARRAY 的元素

`jsonArrayObj.get(0);`
于 2013-10-15T11:07:04.673 回答
1

阅读您的问题后。看来您有 2 个问题

要为此在线生成 JSON,我建议您访问此链接。这将生成所需的 JSON。

要解析 json,请参见下面的代码,假设您已将此 JSON 响应放入字符串变量结果中

            String result = "yourresponse";

            try {
                JSONObject object = new JSONObject(result);
                JSONObject object1 = object.getJSONObject("response");
                JSONArray arr = object1.getJSONArray("Players");
                for (int i = 0; i < arr.length(); i++) 
                {
                      JSONObject object3 = arr.getJSONObject(i);
                      String steamId = object3.getString("steamid");
                      String communityvisibilitystate = object3
                        .getString("communityvisibilitystate");
                }

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
于 2013-10-15T11:12:29.503 回答
0

创建一个与您的 json 响应具有完全相同结构的类 Result(例如,请参见下面的结构)

class Result {
    class Response {
        list of (<class Players> {
             String steamid
             String communityvisibilitystate
             String profilestate
             String personaname
             String lastlogoff
             String profileurl
             String avatar
             String avatarmedium
             String avatarfull
             String personastate
             String primaryclanid
             String timecreated
             })
       }
   }
}

然后使用gson像这样解析你的 json。

Result pareseJson = new Gson().fromJson(jsonString, Result.class);
于 2013-10-15T11:08:20.927 回答
0

你可以这样做:

Object obj = parser.parse(new FileReader("c:\\test.json"));

JSONObject jsonObject = (JSONObject) obj;

String steamid= (String) jsonObject.get("steamid");
System.out.println(steamid);

但我建议使用gson。它更容易,并且有据可查。

于 2013-10-15T11:04:47.983 回答