我从服务器获取了包含此值的JSON字符串:
{"server_response":[{"violation":"Driving with No Helmet"},{"violation":"Try"}]}
我尝试做的是将此JSON字符串转换为String Array或Arraylist 使用无头盔驾驶和尝试的值,并将其用作自动填充文本视图中的选项。但我似乎无法正确转换它们。关于我应该做什么的任何帮助或提示?目前,我从另一个活动获取JSON字符串,并将其传递给应该使用它的活动:
String json_string2 = getIntent().getExtras().getString("json_data");
任何人都有时间我愿意学习。 :)谢谢
PS:管理以使其正常运行。 @ Suhafer的答案是完美的。感谢大家的热情帮助! :)
答案 0 :(得分:2)
我认为首先,您需要解析json以获取所需的字符串列表:
String json_string2 = getIntent().getExtras().getString("json_data");
List<String> lStringList = new ArrayList<>();
try {
JSONObject lJSONObject = new JSONObject(json_string2);
JSONArray lJSONArray = lJSONObject.getJSONArray("server_response");
for (int i = 0; i < lJSONArray.length(); i++)
{
lStringList.add(
lJSONArray.getJSONObject(i).getString("violation"));
}
}
catch(Exception e)
{
e.printStackTrace();
}
然后,您需要将该列表设置为适配器:
ArrayAdapter<String> yourListAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lStringList);
接下来,将适配器实现到AutoCompleteTextView。
lAutoCompleteTextView.setAdapter(lStringArrayAdapter);
希望,这对你有所帮助。
答案 1 :(得分:0)
您可以使用jettinson.jar
执行以下操作 try {
String data = "{\"server_response\":[{\"violation\":\"Driving with No Helmet\"},{\"violation\":\"Try\"}]}";
JSONObject jsonObject = new JSONObject(data);
JSONArray temp = jsonObject.getJSONArray("server_response");
int length = temp.length();
if (length > 0) {
String[] recipients = new String[length];
for (int i = 0; i < length; i++) {
JSONObject nObject = new JSONObject(temp.getString(i));
recipients[i] = nObject.getString("violation");
}
}
} catch (JSONException ex) {
Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex);
}
答案 2 :(得分:0)
阅读您的评论我认为您希望此列表填充在AutoCompleteTextView上。我已经写得很清楚,如果你仔细地遵循这些步骤,这肯定会有所帮助。
首先获取响应并将其转换为List<String> list = new ArrayList<>()
格式,通过
ArrayAdapter
yourListAdapter = new ArrayAdapter<String>(YourActivity.this,
android.R.layout.simple_list_item_1, list);
在此之后设置yourAutoCompleteTextBoxName.setAdapter(yourListAdapter);
在您的活动中初始化:
yourAutoCompleteTextBoxName.setOnEditorActionList(...){...}
如果您希望从AutoComplete TextView中单击列表,请执行以下操作:
yourAutoCompleteTextBoxName.setOnItemClickListener(...){...}
答案 3 :(得分:0)
获取字符串列表:
您可以使用Jackson's ObjectMapper课程。
public class Data {
String violation;
...
}
List<Data> violations = objectMapper.readValue(json, new TypeReference<List<Data>>(){});
答案 4 :(得分:0)
下图:“数组”将包含所有违规行为。 (你需要一些try / catch来包围)。祝你有个美好的一天!
JSONObject json = new JSONObject(json_string2);
JSONArray violations = json.getJSONArray("server_response");
String[] array = new String[violations.length()];
for(int i = 0; i < violations.length(); i++) {
JSONObject violation = new JSONObject(violations.getString(i));
array[i] = violation.getString("violation");
}
答案 5 :(得分:0)
您可以使用Gson库https://github.com/google/gson
从JSON或JSON-Schema生成普通的旧Java对象http://www.jsonschema2pojo.org/
YourJsonData jsonObject;
String json_string2 = getIntent().getExtras().getString("json_data");
Gson gson = new Gson();
jsonObject = gson.fromJson(json_string2, YourJsonData.class);
从jsonObject你可以得到你的列表,即server_response数组列表。