com.google.gson.JsonSyntaxException: java .lang.IllegalStateException: Не JSON Массив: {"тип": "Точка", "координаты": [- 122.3964485,37.7912561]} - PullRequest
0 голосов
/ 31 января 2020

Не исключение JSON Массив с использованием Mapbox API для Android Я использую плагин Mapbox place implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-places:0.6.0' для android для поиска определенного местоположения. Но когда я запускаю это приложение на своем мобильном телефоне, я получаю исключение времени выполнения как com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Not a JSON Array: {"type":"Point","coordinates":[-122.3964485,37.7912561]} Это мой фрагмент кода:


    private void addUserLocations() {
        home = CarmenFeature.builder().text("Mapbox SF Office")
                .geometry(Point.fromLngLat(-122.3964485, 37.7912561))
                .placeName("50 Beale St, San Francisco, CA")
                .id("mapbox-sf")
                .properties(new JsonObject())
                .build();

        work = CarmenFeature.builder().text("Mapbox DC Office")
                .placeName("740 15th Street NW, Washington DC")
                .geometry(Point.fromLngLat(-77.0338348, 38.899750))
                .id("mapbox-dc")
                .properties(new JsonObject())
                .build();
    }

И исключение:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Not a JSON Array: {"type":"Point","coordinates":[-122.3964485,37.7912561]}
        at com.google.gson.Gson.fromJson(Gson.java:939)
        at com.google.gson.Gson.fromJson(Gson.java:994)
        at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162)
        at com.mapbox.geojson.gson.GeometryDeserializer.deserialize(GeometryDeserializer.java:58)
        at com.mapbox.geojson.gson.GeometryDeserializer.deserialize(GeometryDeserializer.java:19)
        at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
        at com.mapbox.api.geocoding.v5.models.AutoValue_CarmenFeature$GsonTypeAdapter.read(AutoValue_CarmenFeature.java:134)
        at com.mapbox.api.geocoding.v5.models.AutoValue_CarmenFeature$GsonTypeAdapter.read(AutoValue_CarmenFeature.java:34)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at com.mapbox.api.geocoding.v5.models.CarmenFeature.fromJson(CarmenFeature.java:64)
        at com.mapbox.mapboxsdk.plugins.places.autocomplete.viewmodel.PlaceAutocompleteViewModel.getFavoritePlaces(PlaceAutocompleteViewModel.java:98)
        at com.mapbox.mapboxsdk.plugins.places.autocomplete.ui.PlaceAutocompleteFragment.updateFavoritePlacesView(PlaceAutocompleteFragment.java:232)
        at com.mapbox.mapboxsdk.plugins.places.autocomplete.ui.PlaceAutocompleteFragment.onActivityCreated(PlaceAutocompleteFragment.java:126)
        at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2460)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1483)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620)
        at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1392)
        at android.app.Activity.performStart(Activity.java:7304)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3193)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2013)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:227)
        at android.app.ActivityThread.main(ActivityThread.java:7217)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:575)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:887)
2020-01-31 20:21:03.833 12793-12793/com.example.mpboxdirectionwsearch E/AndroidRuntime: Caused by: java.lang.IllegalStateException: Not a JSON Array: {"type":"Point","coordinates":[-122.3964485,37.7912561]}
        at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:107)
        at com.mapbox.geojson.gson.PointDeserializer.deserialize(PointDeserializer.java:47)
        at com.mapbox.geojson.gson.PointDeserializer.deserialize(PointDeserializer.java:20)
        at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
        at com.google.gson.Gson.fromJson(Gson.java:927)
            ... 43 more

1 Ответ

1 голос
/ 31 января 2020

Это потому, что это не массив JSON, а JSON. JSON Массивы начинаются и заканчиваются [ и ] соответственно.

...