Я новичок в java и android, поэтому имейте это в виду.

У меня есть Arraylist из Arraylist целых чисел. Эти целые числа представляют собой данные от GPS, такие как широта, долгота, скорость в этот момент и расстояние, добавленные в массив массивов в OnLocationChanged, и все эти массивы элементов затем добавляются в другой список массивов (вроде как матрица или таблица)

пример : [[timestamp, lat, long, distance_from_start, speed], [...], ...] (все целые числа)

Я хочу преобразовать этот Arraylist массивов, чтобы я мог сохранить его во внутреннем хранилище моего приложения для использования в других действиях (например, статистики этих данных) и загрузить его на сервер. Я довольно много поискал и обнаружил, что преобразование arrayylist в json позволяет это, а также упрощает создание файла SQL с этими данными. Преобразование arrayylist в json кажется достаточно простым, но я не могу найти никаких примеров преобразования arrayylist в json. Итак, я не знаю, преобразованы ли массивы в arrayylist в jsonarrays или что-то еще, или будут ли они вообще доступны для использования и чтения из файла json. Если это невозможно, есть ли другие альтернативные способы сделать это?

Большое спасибо!

0
Florian Van Heghe 26 Окт 2015 в 11:44

2 ответа

Лучший ответ

Используйте библиотеку org.json.JsonArray.

import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;

public class Test {
    public static void main(String[] args) {
        List<List<Integer >> list= new ArrayList<List<Integer>>();
        List<Integer> list1=new ArrayList();
        list1.add(10);
        list1.add(20);
        list.add(list1);
        List<Integer> list2=new ArrayList();
        list2.add(60);
        list2.add(70);
        list.add(list2);
        JSONArray jsonArray= new JSONArray(list);
        System.out.println(jsonArray);  
    }


}

Выход:

[[10,20], [60,70]]

3
Ankit 26 Окт 2015 в 09:04

Вы можете использовать Gson от Google.

Ваши основные функции: toJson и fromJson.

От Javadoc:

toJson (объект src)

Этот метод сериализует указанный объект в его эквивалентное представление Json.

fromJson (строка json, тип typeOfT)

Этот метод десериализует указанный Json в объект указанного типа.

Например:

(Сериализация)

Gson gson = new Gson();
gson.toJson(1);            ==> prints 1
gson.toJson("abcd");       ==> prints "abcd"
gson.toJson(new Long(10)); ==> prints 10
int[] values = { 1 };
gson.toJson(values);       ==> prints [1]

(Десериализация)

int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class);

Примеры объектов

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(Сериализация)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);  
==> json is {"value1":1,"value2":"abc"}

Обратите внимание, что вы не можете сериализовать объекты с циклическими ссылками, поскольку это приведет к бесконечной рекурсии.

(Десериализация)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   
==> obj2 is just like obj

Список списков целых чисел

List<List<Integer >> list = new ArrayList<List<Integer>>();
List<Integer> list1=new ArrayList();
list1.add(100);
list1.add(200);
list.add(list1);
List<Integer> list2=new ArrayList();
list2.add(700);
list2.add(800);
list.add(list2);
Gson gson = new Gson()
String json = gson.toJson(list);
System.out.println(json);
3
Avihoo Mamka 26 Окт 2015 в 09:15