JsonExeption при разборе локального файла Json - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь использовать локальный файл Json для отображения маркеров на API карт Google.Проблема в том, что я получаю эту ошибку.

W / System.err: org.json.JSONException: Value {"предсказания": [{"description": "ИГРА Пейсли, Хай-стрит, Пейсли, UK "," id ":" d4fafbac99296d0a545170bb9af984e6251ac917 "," matched_substrings ": [{" length ": 4," offset ": 0}]," place_id ":" ChIJN0z6gTdJiEgREKQBicnWiKhIK "": {" main_text ":" GAME Paisley "," main_text_matched_substrings ": [{" length ": 4," offset ": 0}], "cond_text": "High Street, Paisley, UK"}, "Terms":[{"offset": 0, "value": "GAME Paisley"}, {"offset": 14, "value": "High Street"}, {"offset": 27, "value": "Paisley"}, {"offset": 36, "value": "UK"}], "types": ["creation"]}, {"description": "GAME Glasgow Union Street, Union Street, Глазго, Великобритания", "id":" 9579c1d2df7575a2eb479ccd987cf29ab0ab9c6e», "matched_substrings": [{ "длина": 4, "смещение": 0}], "place_id": "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc", "ссылка": "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc", "structured_formatting": { "main_text": "GAME Glasgow Union Street", "main_text_mat"ched_substrings ": [{" length ": 4," offset ": 0}], "cond_text": "Юнион-стрит, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "GAME Glasgow Union Street "}, {" offset ": 27," value ":" Union Street "}, {" offset ": 41," value ":" Glasgow "}, {" offset ": 50," value ": "UK"}], "types": ["creation"]}, {"description": "Игра, площадь Святого Еноха, Глазго, Великобритания", "id": "582edc64f3d6654d8ff9a8da364c37a8e0544102", "matched_substrings": [{"длина ": 4," смещение ": 0}]," place_id ":" ChIJq2yljp5GiEgRpsnAfUFKGEA " "ссылка": "ChIJq2yljp5GiEgRpsnAfUFKGEA", "structured_formatting": { "main_text": "Игра", "main_text_matched_substrings": [{" длина": 4," offset ": 0}], "cond_text": "Площадь Святого Иноха, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "Game"}, {"смещение ": 6," значение ":" Площадь Святого Еноха "}, {" смещение ": 26," значение ":" Глазго "}, {" смещение ": 35," значение ":" Великобритания "}],"types ": [" creation "]}, {" description ":" GAME Glasgow King's Inch Road, King's Inch Road, Глазго, Великобритания "," id ":" b60dbbc529f25226dfee4c05c80de8e92137588d "," matched_substrings ": [{" length ": 4, "смещение": 0}], "PLAce_id ":" ChIJv2Te_ENPiEgRknxQydZhR8Q "," reference ":" ChIJv2Te_ENPiEgRknxQydZhR8Q "," structd_formatting ": {" main_text ":" Glasgow King's Inch Road ", длина строки: 0: [}): "______"], "cond_text ":" King's Inch Road, Глазго, Великобритания "}," term ": [{" offset ": 0," value ":" GAME Glasgow King's Inch Road "}, {" offset ": 31,"value ":" King's Inch Road "}, {" offset ": 49," value ":" Glasgow "}, {" offset ": 58," value ":" UK "}]," types ": [" creation"]}, {" description ":" GAME, Cowglen Road, Glasgow, UK "," id ":" 86a4ed10b3b9b609f68533f1c47dc8f9ae5d2aee "," matched_substrings ": [{" length ": 4,« offset »: 0}], place_id":" ChIJT3vEiYRIiEgR4EIqP8jmL6o», "справочник": "ChIJT3vEiYRIiEgR4EIqP8jmL6o", "structured_formatting": { "main_text": "игра", "main_text_matched_substrings": [{ "длина": 4, "смещение": 0}], "secondary_text": "Cowglen Road, Глазго, Великобритания"}, "term": [{"offset": 0, "value": "GAME"}, {"offset": 6, "value": "Cowglen Road"}, {"смещение": 20, "значение": "Глазго"}, { "смещение": 29, "значение": "UK"}], "типы": [ "создание"]}], "статус": "OK"} of type org.json.JSONObject не может быть преобразовано в JSONArray W / System.err: в org.json.JSON.typeMismatch (JSON.java:111) в org.json.JSONArray. (JSONArray.java:96) в org.json.JSONArray. (JSONArray.java:108) на странице поблизостиMapsActivity.java:102)

    at android.os.AsyncTask$2.call(AsyncTask.java:304) W/System.err:     at

java.util.concurrent.FutureTask.run (FutureTask.java:237) в android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:243) W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:607) в java.lang.Thread.run (Thread.java:762)

Это код активности моей карты

  @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_maps);
            // Obtain the SupportMapFragment and get notified when the map is ready to be used.
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);

        }
        @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;

            gps = new TrackGPS(MapsActivity.this);
            new AsyncTaskGetMareker().execute();
            /*
            if(gps.canGetLocation()){
                currentLoc= new LatLng(gps.getLatitude(),gps.getLongitude());
                Log.d(TAG, "onMapReady: Got Location: " +gps.getLatitude() + " " + gps.getLongitude());
                // Add a marker in Sydney and move the camera
                mMap.addMarker(new MarkerOptions()
                        .position(currentLoc)
                        .title("CurrentLocation"));
                Log.d(TAG, "onMapReady: Displaying Map");
                mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLoc,15));
            }else{
                gps.showAlert();
            }
            */
        }

        public String getJSONFromAssets() {
            String json = null;
            try {
                InputStream inputData = getAssets().open("gameStores.json");
                int size = inputData.available();
                byte[] buffer = new byte[size];
                inputData.read(buffer);
                inputData.close();
                json = new String(buffer, "UTF-8");
            } catch (IOException ex) {
                ex.printStackTrace();
                return null;
            }
            return json;
        }

        private class AsyncTaskGetMareker extends AsyncTask<String , String, JSONArray> {
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected JSONArray doInBackground(String... strings) {
                String stationsJsonString = getJSONFromAssets();
                try {
                    JSONArray stationsJsonArray = new JSONArray(stationsJsonString);
                    return stationsJsonArray;
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                //This will only happen if an exception is thrown above:
                return null;
            }

            protected void onPostExecute (JSONArray result){
                if (result !=null){
                    for (int i =0; i <result.length(); i++){
                        JSONObject jsonObject= null;
                        try {
                            jsonObject= result.getJSONObject(i);
                            String name=jsonObject.getString("name");
                            String lat=jsonObject.getString("lat");
                            String lang=jsonObject.getString("lang");

                            drawMarker(new LatLng(Double.parseDouble(lat),
                                    Double.parseDouble(lang)), name);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }

            private void drawMarker(LatLng point, String name) {
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(point);
                markerOptions.snippet(name);
                mMap.addMarker(markerOptions);
            }
        }

Это мой файл json

>

 {    "predictions" : [
>       {
>          "description" : "GAME Paisley, High Street, Paisley, UK",
>          "id" : "d4fafbac99296d0a545170bb9af984e6251ac917",
>          "matched_substrings" : [
>             {
>                "length" : 4,
>                "offset" : 0
>             }
>          ],
>          "place_id" : "ChIJN0z6gTdJiEgREKQBicnWcAs",
>          "reference" : "ChIJN0z6gTdJiEgREKQBicnWcAs",
>          "structured_formatting" : {
>             "main_text" : "GAME Paisley",
>             "main_text_matched_substrings" : [
>                {
>                   "length" : 4,
>                   "offset" : 0
>                }
>             ],
>             "secondary_text" : "High Street, Paisley, UK"
>          },
>          "terms" : [
>             {
>                "offset" : 0,
>                "value" : "GAME Paisley"
>             },
>             {
>                "offset" : 14,
>                "value" : "High Street"
>             },
>             {
>                "offset" : 27,
>                "value" : "Paisley"
>             },
>             {
>                "offset" : 36,
>                "value" : "UK"
>             }
>          ],
>          "types" : [ "establishment" ]
>       },
>       {
>          "description" : "GAME Glasgow Union Street, Union Street, Glasgow, UK",
>          "id" : "9579c1d2df7575a2eb479ccd987cf29ab0ab9c6e",
>          "matched_substrings" : [
>             {
>                "length" : 4,
>                "offset" : 0
>             }
>          ],
>          "place_id" : "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc",
>          "reference" : "ChIJ2YlAjJ5GiEgRu7aBLOFlkkc",
>          "structured_formatting" : {
>             "main_text" : "GAME Glasgow Union Street",
>             "main_text_matched_substrings" : [
>                {
>                   "length" : 4,
>                   "offset" : 0
>                }
>             ],
>             "secondary_text" : "Union Street, Glasgow, UK"
>          },
>          "terms" : [
>             {
>                "offset" : 0,
>                "value" : "GAME Glasgow Union Street"
>             },
>             {
>                "offset" : 27,
>                "value" : "Union Street"
>             },
>             {
>                "offset" : 41,
>                "value" : "Glasgow"
>             },
>             {
>                "offset" : 50,
>                "value" : "UK"
>             }
>          ],
>          "types" : [ "establishment" ]
>       },
>       {
>          "description" : "Game, Saint Enoch Square, Glasgow, UK",
>          "id" : "582edc64f3d6654d8ff9a8da364c37a8e0544102",
>          "matched_substrings" : [
>             {
>                "length" : 4,
>                "offset" : 0
>             }
>          ],
>          "place_id" : "ChIJq2yljp5GiEgRpsnAfUFKGEA",
>          "reference" : "ChIJq2yljp5GiEgRpsnAfUFKGEA",
>          "structured_formatting" : {
>             "main_text" : "Game",
>             "main_text_matched_substrings" : [
>                {
>                   "length" : 4,
>                   "offset" : 0
>                }
>             ],
>             "secondary_text" : "Saint Enoch Square, Glasgow, UK"
>          },
>          "terms" : [
>             {
>                "offset" : 0,
>                "value" : "Game"
>             },
>             {
>                "offset" : 6,
>                "value" : "Saint Enoch Square"
>             },
>             {
>                "offset" : 26,
>                "value" : "Glasgow"
>             },
>             {
>                "offset" : 35,
>                "value" : "UK"
>             }
>          ],
>          "types" : [ "establishment" ]
>       },
>       {
>          "description" : "GAME Glasgow King's Inch Road, King's Inch Road, Glasgow, UK",
>          "id" : "b60dbbc529f25226dfee4c05c80de8e92137588d",
>          "matched_substrings" : [
>             {
>                "length" : 4,
>                "offset" : 0
>             }
>          ],
>          "place_id" : "ChIJv2Te_ENPiEgRknxQydZhR8Q",
>          "reference" : "ChIJv2Te_ENPiEgRknxQydZhR8Q",
>          "structured_formatting" : {
>             "main_text" : "GAME Glasgow King's Inch Road",
>             "main_text_matched_substrings" : [
>                {
>                   "length" : 4,
>                   "offset" : 0
>                }
>             ],
>             "secondary_text" : "King's Inch Road, Glasgow, UK"
>          },
>          "terms" : [
>             {
>                "offset" : 0,
>                "value" : "GAME Glasgow King's Inch Road"
>             },
>             {
>                "offset" : 31,
>                "value" : "King's Inch Road"
>             },
>             {
>                "offset" : 49,
>                "value" : "Glasgow"
>             },
>             {
>                "offset" : 58,
>                "value" : "UK"
>             }
>          ],
>          "types" : [ "establishment" ]
>       },
>       {
>          "description" : "GAME, Cowglen Road, Glasgow, UK",
>          "id" : "86a4ed10b3b9b609f68533f1c47dc8f9ae5d2aee",
>          "matched_substrings" : [
>             {
>                "length" : 4,
>                "offset" : 0
>             }
>          ],
>          "place_id" : "ChIJT3vEiYRIiEgR4EIqP8jmL6o",
>          "reference" : "ChIJT3vEiYRIiEgR4EIqP8jmL6o",
>          "structured_formatting" : {
>             "main_text" : "GAME",
>             "main_text_matched_substrings" : [
>                {
>                   "length" : 4,
>                   "offset" : 0
>                }
>             ],
>             "secondary_text" : "Cowglen Road, Glasgow, UK"
>          },
>          "terms" : [
>             {
>                "offset" : 0,
>                "value" : "GAME"
>             },
>             {
>                "offset" : 6,
>                "value" : "Cowglen Road"
>             },
>             {
>                "offset" : 20,
>                "value" : "Glasgow"
>             },
>             {
>                "offset" : 29,
>                "value" : "UK"
>             }
>          ],
>          "types" : [ "establishment" ]
>       }    ],    "status" : "OK" }

1 Ответ

0 голосов
/ 20 ноября 2018

org.json.JSONObject не может быть преобразован в JSONArray

Ваш корневой узел - JSONObject, но вы анализируете его, используя JSONArray.

Заменить

JSONArray stationsJsonArray = new JSONArray(stationsJsonString);

на

JSONObject stationsJsonObject = new JSONObject(stationsJsonString);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...