java - Gson 将一组数据对象转换为 json - Android

标签 java android json gson

目前我正在开发一个带有 webView 前端的原生 android 应用程序。

我有类似的东西:

public class dataObject
{
  int a;
  String b;
}

在 Activity 中,

我已经创建了一个 dataObject 数组,比如 dataObject x[5];

现在我想在回调函数中将这 5 个数据对象作为 JSON 传递给我的 javascript webView 接口(interface)。

我浏览了互联网,似乎大多数教程都在谈论如何转换 fromJson()。关于 toJson() 的内容不多。我找到了一个告诉我 dataObject.toJson() 会起作用的方法。

但是我怎样才能传递所有 5 个数据对象呢?

最佳答案

这是一个关于如何将 Gson 与对象列表一起使用的综合示例。这应该准确地演示如何与 Json 相互转换、如何引用列表等。

Test.java:

import com.google.gson.Gson;
import java.util.List;
import java.util.ArrayList;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;


public class Test {

  public static void main (String[] args) {

    // Initialize a list of type DataObject
    List<DataObject> objList = new ArrayList<DataObject>();
    objList.add(new DataObject(0, "zero"));
    objList.add(new DataObject(1, "one"));
    objList.add(new DataObject(2, "two"));

    // Convert the object to a JSON string
    String json = new Gson().toJson(objList);
    System.out.println(json);

    // Now convert the JSON string back to your java object
    Type type = new TypeToken<List<DataObject>>(){}.getType();
    List<DataObject> inpList = new Gson().fromJson(json, type);
    for (int i=0;i<inpList.size();i++) {
      DataObject x = inpList.get(i);
      System.out.println(x);
    }

  }


  private static class DataObject {
    private int a;
    private String b;

    public DataObject(int a, String b) {
      this.a = a;
      this.b = b;
    }

    public String toString() {
      return "a = " +a+ ", b = " +b;
    }
  }

}

编译它:

javac -cp "gson-2.1.jar:." Test.java

最后运行它:

java -cp "gson-2.1.jar:." Test

请注意,如果您使用的是 Windows,则必须在前两个命令中将 :; 进行切换。 p>

运行之后,应该会看到如下输出:

[{"a":0,"b":"zero"},{"a":1,"b":"one"},{"a":2,"b":"two"}]
a = 0, b = zero
a = 1, b = one
a = 2, b = two

请记住,这只是一个演示其工作原理的命令行程序,但同样的原则也适用于 Android 环境(引用 jar 库等)

关于java - Gson 将一组数据对象转换为 json - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186806/

相关文章:

java - 预触发 propertyChangeEvent 的危险

android - 从 Canvas 上清除绘画而不清除背景图像 - Android

objective-c - 字典值字典中的 iPhone NSArray

json - 在 Azure 中处理 JSON

php - 如何将一个 JSON 包含在另一个 JSON 中?

java - 想要在startActivity之前要求用户确认他的信息是否正确,android

Java如何使用另一个类的实例访问方法

java - 如何在解析 JSON 字符串时限制内存使用?

android - fragment 内异步任务中的空指针异常

java - 尝试从 json 字符串获取数据时出现异常