【问题标题】:Json object to json array Java (Android)Json 对象到 json 数组 Java (Android)
【发布时间】:2013-12-06 13:24:07
【问题描述】:

已经有一段时间了,我试图忽略一些令人沮丧的问题,我在 java 中遇到了 json 问题,我对此很陌生,但是阅读了很多,在 javascript 或 php 中解析 json 要好得多(或更容易我不知道)但现在在 java 中,如果没有父对象,我无法将 jsonobject 转换为 jsonarray,因为它使用 .getJsonArray('array)

但是如果我有这个:

{"49588":"1.4 TB","49589":"1.4 TB MultiAir","49590":"1.4 TB MultiAir TCT","49591":"1.6L MultiJet","49592":"1750 Tbi","49593":"2.0L MultiJet","49594":"2.0L MultiJet TCT"}

无论如何我都没有成功将其转换为数组

我想要的是在其项目中将此 JSONObject 转换为 JSONArray 循环并将它们添加到 Spinner,现在这是第一个问题,第二个问题是:如果我将其转换为 JSONArray 如何将 ID、Text 添加到微调器?就像 HTML Select 标签

<option value="0">Item 1</option>

所以这是一个问题和一个问题,希望有人能找到这个 jsonarray 的解决方案,而无需修改网站的 json 输出,知道如果我修改并添加一个父级到这个 json,JSONArray 将起作用。但我想找到解决方案。


我在代码中没有什么特别之处:

只是一个 AsynTask 响应,一个显示我在这个问题开头放置的 json 输出的日志

Log.d("response", "res " + response);

// This will work
jsonCarsTrim = new JSONObject(response);

// This won't work
JSONArray jdata = new JSONArray(response);

谢谢!

【问题讨论】:

  • 你能展示你的代码吗?
  • 不是真的@NitinMisra,他正在获取一个数组并使用for循环遍历它,但我什至没有获得一个数组,并且无法在没有Iterator的情况下循环遍历jsonobject,我不想使用它,我想知道如何将这种类型转换为数组因为我现在经常遇到这个问题,需要一个解决方案,不想修改网站输出

标签: android android-spinner arrays jsonobject


【解决方案1】:

这个怎么样:

JSONObject json = new JSONObject(yourObject);
Iterator itr = json.keys();

ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
ArrayList<Integer> links = new ArrayList<Integer>();

int i = 0;
while(itr.hasNext()) {
    String key = itr.next().toString();
    links.add(i,Integer.parseInt(key));
    entries.add(i, (CharSequence) json.getString(key)); //for example
    i++;
}

//this is the activity
 entriesAdapter = new ArrayAdapter<CharSequence>(this,
            R.layout.support_simple_spinner_dropdown_item, entries);
//spinner is the spinner the data is added too
spinner.setAdapter(entriesAdapter);

这应该可以工作(对我有用),您可能需要修改代码。 如图所示,我将 json 对象的所有条目添加到 Spinner 中,其中我的 json 键是索引值,并且 json 对象的链接字符串值将在我的活动中显示为 Spinner 条目(标题)。

现在,当一个项目被选中时,获取 SelectedItemPosition 并且您可以在“链接”数组列表中查找它,以获得真正的值。

【讨论】:

  • 我将它用于以前的对象它可以工作,但我想为我的特定问题找到解决方案,否则有人应该告诉我它不起作用,那么我不会寻找解决方案,而且我认为至少手动爆炸逗号字符有一个解决方案。我的另一个问题是如何将此值/文本添加到微调器
  • 什么是“价值观”?
  • 对不起,那里没有值(复制和粘贴错误),我在最近的一个项目中使用了非常相似的代码
  • 看起来很有希望,但我遇到两个错误:ArrayList 类型中的方法 add(int, CharSequence) 不适用于参数 (String, String)
  • 工作至今,但在运行时出错:ArrayList.throwIndexOutOfBoundsException(int, int) line: 255 (index: 123, size : 0)
【解决方案2】:

我不确定这是否是您想要的,但请尝试一下。有将 Json 转换为 Map 的教程。转换后,您可以遍历地图。

http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/

【讨论】:

  • 不错的链接...真的很有帮助
【解决方案3】:

您拥有的是 JSON 对象类型,而不是数组类型。要进行迭代,您可以从 keys 方法中获取 Iterator

【讨论】:

  • 1 - 无法将其转换为 jsonarray ? 2 - 如何通过迭代器将此值、文本添加到微调器?
猜你喜欢
  • 2015-02-22
  • 1970-01-01
  • 2019-08-10
  • 2019-05-03
  • 2011-11-14
  • 2020-03-31
  • 2020-08-02
  • 2019-03-27
  • 2018-08-28
相关资源
最近更新 更多