0

已经有一段时间了,我试图忽略一些令人沮丧的问题,我在 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);

谢谢 !

4

3 回答 3

3

这个怎么样:

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 并且您可以在“链接”数组列表中查找它,以获得实际值。

于 2013-12-06T13:32:19.593 回答
2

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

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

于 2013-12-06T13:34:04.217 回答
0

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

于 2013-12-06T13:28:13.050 回答