【问题标题】:Converting Arraylist<Arraylist<Integer>> to json将 Arraylist<Arraylist<Integer>> 转换为 json
【发布时间】:2015-10-26 08:44:22
【问题描述】:

我对 java 和 android 很陌生,所以请记住这一点。

我有一个整数 Arraylist 的 Arraylist。这些整数是来自 GPS 的数据,例如纬度、经度、当时的速度和距离,添加到 OnLocationChanged 中的数组列表中,然后所有这些数组列表都添加到另一个数组列表中。(有点像矩阵或表格)

例子:[[timestamp,lat,long,distance_from_start,speed],[...],...](都是整数)

我想转换这个 Arraylist 的数组列表,以便我可以将它保存在我的应用程序的内部存储中,以用于其他活动(例如此数据的统计信息)并将其上传到服务器。我已经搜索了很多,发现将 arraylist 转换为 json 可以实现这一点,并且还可以更轻松地创建该数据的 SQL 文件。将arraylist 转换为json 似乎很容易,但我找不到任何将arraylist 的arraylist 转换为json 的示例。所以我不知道 arraylist 中的 arraylists 是否被转换为 jsonarrays 或其他什么,或者它们是否可以从 json 文件中使用和读取。如果无法做到这一点,是否还有其他替代方法?

非常感谢!

【问题讨论】:

    标签: java android arrays json arraylist


    【解决方案1】:

    使用 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]]

    【讨论】:

      【解决方案2】:

      您可以使用来自 Google 的Gson

      您的主要功能是:toJsonfromJson

      来自 javadoc:

      toJson(对象源)

      此方法将指定的对象序列化为其等效的 Json 表示形式。

      fromJson(String 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);
      

      【讨论】:

      • 感谢您的回答。我已经了解如何使用 gson 转换为 Json,但我仍然不明白我应该如何为 arraylist 中的 arraylists 执行此操作,以及它在 json 格式中的外观以及它是否可以正常工作。一个数组列表中的数组列表的例子会很棒。
      猜你喜欢
      • 1970-01-01
      • 2021-02-21
      • 2019-08-24
      • 1970-01-01
      • 2015-07-22
      • 2012-10-21
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多