2014-11-11 2 views
0

У меня есть этот код, который возвращает ответ поставщика API в формате JSON Object. Ниже приведен код:Значение извлечения объекта JSON

public class Authentication { 
    public static void main(String[] args) { 
     try { 
      URL url = new URL ("https://xxxxx.com"); 
      String encoding = "xxxxxxxxx"; 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setDoOutput(true); 
      connection.setRequestProperty ("Authorization", "Basic " + encoding); 
      InputStream content = (InputStream)connection.getInputStream(); 
      BufferedReader in = 
       new BufferedReader (new InputStreamReader (content)); 
      String line; 
      while ((line = in.readLine()) != null) { 
       System.out.println(line);             
      } 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Приведенный выше код будет возвращать ответ, как это:

{ 
    "accessToken": "0.AQAAAUmdztB3AAAAAAAEkvg", 
    "tokenType": "Bearer", 
    "expiresIn": 300 
} 

Так вот проблема, я пытаюсь получить значение только маркер доступа, так что я могу используйте его, чтобы сделать api-вызов. Я пробовал:

String loudScreaming = JSONML.toJSONObject("accessToken").getString("accessToken"); 

Но оно вернет null. Я читал о Джексоне, но не знаю, как это сделать. Пожалуйста, направляйте меня. Заранее спасибо.

+0

Я думаю, вы используете что-то другое, чем Джексон. Он не содержит класс JSONML. В любом случае, вероятно, вы должны добавить 'line' вместо' 'accessToken'' в качестве параметра' toJSONObject (...) '. –

ответ

1

Вам не нужен Джексон, чтобы разобрать простую структуру JSON. Это сделает работу

import org.json.JSONObject; 

String jsondata = "{\"accessToken\":\"0.AQAAAUmdztB3AAAAAAAEkvg\",\"tokenType\":\"Bearer\",\"expiresIn\": 300}" 

JSONObject obj = new JSONObject(jsondata); 
String accessToken = obj.getJSONObject().getString("accessToken"); 
+0

@StrikeNeo Вы еще не пробовали? –

0

Вот несколько простых примеров, показывающих, как, как вы могли бы использовать Джексон (версия 2.4.3), и как вы могли бы использовать GSON (версия 2.3). Это довольно простые варианты использования, и их документация показывает, насколько универсальны обе эти библиотеки.

final String JSON_STRING = "{\n" + 
     " \"accessToken\": \"0.AQAAAUmdztB3AAAAAAAEkvg\",\n" + 
     " \"tokenType\": \"Bearer\",\n" + 
     " \"expiresIn\": 300\n" + 
     "}"; 
ObjectMapper objectMapper = new ObjectMapper(); 
ObjectNode jackson = objectMapper.readValue(JSON_STRING, ObjectNode.class); 
JsonNode jacksonAccessToken = jackson.get("accessToken"); 
System.out.println("Jackson accessToken: " + jacksonAccessToken); 

Gson gson = new Gson(); 
JsonObject gsonObject = gson.fromJson(JSON_STRING, JsonObject.class); 
JsonElement gsonAccessToken = gsonObject.get("accessToken"); 
System.out.println("GSON accessToken: " + jacksonAccessToken); 
Смежные вопросы