2015-03-13 4 views
0

У меня есть веб-служба PHP, которая извлекает данные из базы данных MySQL.Значение java.lang.String не может быть преобразовано в double

У меня есть приложение для Android, которое вызывает сервис.

Локально на моем сервере WAMP все работает нормально, но я просто загрузил данные/службу в домен и проверил на это.

Я получаю эту ошибку:

org.json.JSONException: Value at Latitude of type java.lang.String cannot be converted to double 

Из этой строки кода:

double latitude = thisVenue.getDouble(TAG_LATITUDE); 

И значение (извлекая из журнала через Android Studio), который вызывает эту ошибку является:

"Latitude":"51.05279" 

Не могу понять, почему это значение не может быть преобразовано в двойное. Локально мое приложение может анализировать один и тот же набор данных без проблем, поэтому я полагаю, что он имеет какое-то отношение к тому, как он хранится/извлекается?

Edit: Вот один из объектов, возвращаемых в формате JSON, обратите внимание на все значения имеют ЦИТАТЫ

{"VenueID":"4","ListingID":"19","Name":"TempName1","Location":"207 10A St NW","DayOfWeek":"Mon","Featured":"0","FeaturedDistanceRange":"0","Latitude":"51.05279","Longitude":"-110.087509","StartHour":"4","StartHourType":"pm","StartMinute":"0","EndHour":"7","EndHourType":"pm","EndMinute":"0"} 

И я форматировать его как JSON выглядеть примерно так:

header("Content-type: application/json"); 
    print(json_encode(array('venues'=>$data))); 
+0

Заглянуть сюда и проверьте ваши символы ... http://stackoverflow.com/questions/13368739/jsonexception-value-of-type-java-lang-string-cannot-be-converted-to -jsonobject – puj

+0

Это стандартный ответ JSON. Все возвращается котируется – andrewb

ответ

0

Как видно из данных с сервера не является двойным, u должен использовать как это

double latitude = Double.valueOf(thisVenue.getString(TAG_LATITUDE)); 
+0

Это приводит к фатальному исключению. Как я сказал, все в JSON возвращается с кавычками вокруг него, даже int fields – andrewb

+0

Нет, это правильное поведение JSON – andrewb

+1

Нет, это не так, '" 5.1 "' является строкой '5.1' является двойной – Selvin

0

Проверьте, что вы получаете действительную двойную спину от getDouble() метод (компилятор не думает, что вы есть. Если следующее компилирует и выдает исключение NumberfFormatException во время выполнения, вы знаете, что не получаете действительного двойника. И «Широта»: «51.05279» не похоже на разобранный двойной «51.05279».

double latitude = Double.parseDouble(thisVenue.getDouble(TAG_LATITUDE)); 
+0

«Широта» - это ключ JSON. Я получаю NumberFormatException: Caused by: java.lang. NumberFormatException: недопустимый двойной: "" – andrewb

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