【问题标题】:How to convert a Vector to JSONArray?如何将向量转换为 JSONArray?
【发布时间】:2012-08-14 14:30:37
【问题描述】:

我需要将Vector<Vector<Float>> 转换为JSONArray。除了遍历向量并创建JSONArray,还有更简单的方法吗?

有人告诉我试试 gson。

【问题讨论】:

  • 你为什么要尝试序列化和反序列化以相同的方法?您的 json 字符串已经将您的矢量数据保存为 JSON。通过尝试获取 JSONArray,您正在尝试将其恢复为 Java 对象(但使用不同的 JSON 库)。为什么?为什么不直接使用data?你到底想完成什么?
  • 我的目标是将 Vector 转换为 JSONObject。我四处搜寻,似乎 gson 可以提供帮助。你能建议一种方法吗?
  • Gson 用于将 Java 对象序列化为 JSON 格式的字符串。然而 JSONObject 是一个 Java 对象,当您想要获取 JSON 格式的字符串并将其 back 转换为 Java 对象时使用它。它属于一个完全不同的库。当我问你实际上想要完成什么时,我的意思是更高的层次,因为你目前的目标似乎有缺陷。使用 JSON 作为无意义的中介,从一种 Java 对象类型转到另一种是没有意义的。你有需要 JSONObject 或其他东西的代码吗?您是否尝试通过套接字发送 JSON?你的目标是什么?
  • 是的。我正在尝试将 Vector 存储在 Android 的 SharedPreferences 中。在这个线程stackoverflow.com/questions/3876680/… 中有一个帖子,它采用 JSON 对象作为参数来执行此操作。我已经在整个代码中使用了向量,因此将所有内容重写为 JSONArray 是不切实际的。这就是我尝试将 Vector 转换为 JSONArray 的原因。
  • 有一个方法saveJSONObject 可以将JSONObject 转换为字符串。因此,除非我弄错了,否则您可以跳过无用的 JSON 部分,只需按照建议保存字符串。

标签: java vector gson arrays


【解决方案1】:

SharedPreferences 只是一个键值存储。是什么阻止您完全绕过 JSONObject,而只使用类似的东西(仅限 Gson)?

private static final Type DATA_TYPE = 
    new TypeToken<Vector<Vector<Float>>>() {}.getType();

存储:

Vector<Vector<Float>> data = new Vector<Vector<Float>>();
data.add(new Vector<Float>());
data.get(0).add(3.0f);

String dataAsJson = new Gson().toJson(data, DATA_TYPE);
sharedPreferences.edit().putString("data", dataAsJson).commit();

检索:

String dataAsJson = sharedPreferences.getString("data", "[]");
Vector<Vector<Float>> data = new Gson().fromJson(dataAsJson, DATA_TYPE);

免责声明:我从未为 Android 开发过。

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 2014-05-06
    • 2016-02-09
    • 2018-01-07
    • 1970-01-01
    • 2013-11-15
    • 2013-06-06
    • 2016-06-05
    • 2015-07-30
    相关资源
    最近更新 更多