2013-10-15 5 views
-1

Я знаю, что просить сделать что-то плохо, но это первый раз, когда я застрял в java. Недавно я начал изучать Java, и для моего небольшого инструмента мне нужно прочитать эту строку json.java decode json help (using json-simple)

Пол дня я искал и пытался заставить все работать и основал json-simple.

Но я не могу это сделать. Пожалуйста, помогите.

Например просто получить Steamid и communityvisibilitystate в строки

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

и если у вас есть лучшее решение, не используя JSON-простой пост он

{ 
"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 
     } 
    ] 

} 
} 
+0

вы должны попробовать Гоог-х gson https://code.google.com/p/google -gson/вот простое руководство по использованию https://sites.google.com/site/gson/gson-user-guide#TOC-Using-Gson – anfy2002us

ответ

2

1: ваш полный ответ является JSON ОБЪЕКТ

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, а затем пройти его элементы по

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

, а затем вы можете пройти элементы массива JSON с помощью

`jsonArrayObj.get(0);` 
+0

thx man !!! Помогите мне много! (p.s. извините, cant voteup coz havent 15 rep) – AucT

+0

@ user2643757: добро пожаловать –

0

Вы можете сделать sthing так:

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

JSONObject jsonObject = (JSONObject) obj; 

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

Но я рекомендую использовать gson. Это намного проще и хорошо документировано.

0

Создайте класс результат с точно такой же структурой, как ваш ответ JSON (смотри ниже структуры, например)

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); 
1

После прочтения ваш вопрос .Это кажется, у вас есть 2 проблемы

Для генерации JSON на сайте, что я хотел бы предложить вам посетить этот Link. это создаст требуемый 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(); 
      }