Анализ данных json со случайным/неизвестным типом данных для ключа

Как анализировать данные json со случайным/неизвестным типом значения для ключей? В приведенных ниже данных json данные ключа могут быть объектом json или строкой в ​​зависимости от ответа сервера.

Ответ 1 (объект Json)

 {
          "responseCode": 2,
          "responseMessage": "hi",
          "data": {
            "key": "Id",
            "value": "10312412",
            "key2": "Id2",
            "key3": "Id3"
          }
    }

Ответ 2 (строка)

   {
          "responseCode": 2,
          "responseMessage": "hi",
          "data": "String here"
    }

person Bhuvi    schedule 10.11.2016    source источник


Ответы (1)


Лучшее, что вы можете сделать, это

Object data = response.get("data");

Хотя можно попробовать

boolean gotObject = true;
String dataString = null;

// Try to request a JSONObject as a String
dataString = String.valueOf(response.optJSONObject("data"));

// If there wasn't a JSONObject, then try to get a String
if (dataString.isEmpty() || dataString.equals("null")) {
    dataString = response.optString("data");
    gotObject = false;
}

Тогда вы можете попробовать это

if (gotObject) {
    JSONObject data = new JSONObject(dataString);
}

На самом деле, вы должны сделать более согласованный серверный API.

person OneCricketeer    schedule 10.11.2016
comment
спасибо .. я думаю, что это должно быть if (!dataString.isEmpty() || !dataString.equals(null)) ? - person Bhuvi; 10.11.2016
comment
Нет, если он пустой или нулевой, значит, там не было данных, значит, значение не было JSONObject. - person OneCricketeer; 10.11.2016