У меня есть некоторые данные, извлеченные из базы данных MySQL, где некоторые поля: NULL. Не случайно, как строка, но правильно хранится как NULL. Когда я посылаю эти нуль-данные JSON-закодированный мой андроид приложение, они в конечном итоге строка «нуль» длины 4. Таким образом, я перестроил эту проблему сгущенное с существенным кодом:Пустое поле Mysql (NULL) заканчивается как строка «null» в Java
PHP:
$string = null;
echo $array[0]['alt_names'] = $string;
echo json_encode($array);
Java: (Мой PHP класс возвращает строку, в данном случае jsonResult
)
Log.i("Tag", "result = " + jsonResult); // result = [{"alt_names":null}]
JSONArray jsonArray = new JSONArray(jsonResult);
Log.i("Tag", "jsonArray = " + jsonArray); // jsonArray = [{"alt_names":null}]
JSONObject jsonObject = new JSONObject(jsonArray.getJSONObject(0).toString());
Log.i("Tag", "jsonobject = " + jsonObject); // jsonobject = {"alt_names":null}
String test = jsonObject.get("alt_names").toString();
Log.i("Tag", "test: " + test); // test: null
Log.i("Tag", "test.length(): " + test.length()); // test.length(): 4
недостающих кавычек (не) ограждающих null
в журнале выводе показать мне, что это не строку «нулевое» butt фактически null
. Тем не менее длина строки равна 4, и это верно:
if (test.equals("null")) {Log.i("Tag", "true");} // true
Что я не понимаю? Заранее спасибо!
Строка тест = jsonObject.get ("alt_names") ToString();. <- вы набрасываете его на строку здесь ... – RichardBernards
Если я этого не делаю, я получаю ошибку: «Тип несоответствия: невозможно преобразовать из объекта в строку». – Peder
Если вы просто хотите проверить нулевое значение, вы также можете использовать jsonObject.isNull() ... – RichardBernards