2014-11-13 2 views
0

У меня есть некоторые данные, извлеченные из базы данных 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 

Что я не понимаю? Заранее спасибо!

+1

Строка тест = jsonObject.get ("alt_names") ToString();. <- вы набрасываете его на строку здесь ... – RichardBernards

+0

Если я этого не делаю, я получаю ошибку: «Тип несоответствия: невозможно преобразовать из объекта в строку». – Peder

+0

Если вы просто хотите проверить нулевое значение, вы также можете использовать jsonObject.isNull() ... – RichardBernards

ответ

0

Не делайте toString() по возврату объекта jsonObject.get("alt_names"). Это на самом деле статический экземпляр JSONObject.NULL

Object test = jsonObject.get("alt_names"); 
System.out.println(test == JSONObject.NULL); // true 
System.out.println(test.equals(null)); // true 
System.out.println(jsonObject.isNull("alt_names")); // true 

От Javadoc:

It is sometimes more convenient and less ambiguous to have a NULL object than to use Java's null value. JSONObject.NULL.equals(null) returns true. JSONObject.NULL.toString() returns "null".

Смежные вопросы