Использование JSON в Android

459
16 мая 2017, 02:39

Описание: Я делаю небольшое приложение отображающие маркеры но возникла проблема с использованием JSON.

Проблема: я не понимаю как осуществить передачу данных из файла , для последующего создания маркеров на их основе.Большинство примеров которые я находил были для передачи данных с сайтов( Я новичок, делаю для android в Android studio вот пример:

.json:

  {
  "markerss":[
  {
    "title": "West",
    "lat": 53.223798,
    "lng": 44.889040,
    "snippet": "placeinformation2010"
  },
  {
    "title": "East",
    "lat": 53.2220,
    "lng": 44.8799,
    "snippet": "placeinformation102"
  }
]
 }

.java:

public class MapsActivity extends FragmentActivity implements
        OnMapReadyCallback {
     GoogleMap mMap = null;
    private static final LatLng place1 = new LatLng(53.223798, 44.889040);
    private static final LatLng place2 = new LatLng(53.2220, 44.8799);

    // Решил попробовать сделать перемененные для последующей и работы ,тип  ближайшей 
    Marker mPlace1;
    Marker mPlace2;

    @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(map);
        mapFragment.getMapAsync(this);
    }
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
                new LatLng(41.889, -87.622), 10));

        // Создание  маркеров и подробная их подробная информация
        mPlace1 = mMap.addMarker(new MarkerOptions()
                .position(place1)
                .title("West")
                .anchor(0.0f, 1.0f)
               .icon(BitmapDescriptorFactory.fromResource(R.drawable.kebab))
                .snippet("dsf"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(place1));

        mPlace2 = mMap.addMarker(new MarkerOptions()
                .position(place2)
                .title("East")
                .anchor(0.0f, 1.0f)
               .icon(BitmapDescriptorFactory.fromResource(R.drawable.kebab))
               .snippet("edfjk"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(place2));
  }
}
Answer 1

Если я вас правильно понял, то вы хотите хранить JSON строку в памяти телефона и работать локально.

В таком случае вы должны хранить ваш файл coordinates.json в папке assets и оттуда считывать при необходимости.

Вот вам метод для получения JSON строки из папки assets:

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

Этот метод возвращает строку Json, то есть можете присвоить к своему переменному, например:

String coordinatesJson = loadJSONFromAsset();
JSONObject jsonObject = new JSONObject(coordinatesJson);

И дальше распарсить jsonObject

Пример:

    String coordinatesJson = loadJSONFromAsset();
    JSONObject jsonObject;
    try {
        jsonObject = new JSONObject(coordinatesJson);
        JSONArray jsonArray = jsonObject.getJSONArray("markerss");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String title = jsonObject.getString("title"));
            Double lat = jsonObject.getDouble("lat"));
            Double lon = jsonObject.getDouble("lon"));
            String snippet = jsonObject.getString("snippet"));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

Попробуйте, на этом редакторе написал, главное вы поняли суть...

READ ALSO
Отправка JSON на сервер и добавление в БД

Отправка JSON на сервер и добавление в БД

Клиент (Java)Выполняется jar на компьютере

719
Как получить ресурс из другого класса?

Как получить ресурс из другого класса?

Не могу разобраться как часть кода разместить в другом классе и потом получить к нему доступ

412
Создание новых листов Excel (Java) (Apache POI)

Создание новых листов Excel (Java) (Apache POI)

При записи из JTable в Excel постоянно создается новый файл с xls, вместо создания новых листовК примеру :

393