将JSON字符串转换为Spra的Arraylist

时间:2017-11-03 07:17:39

标签: java android json arraylist

我从服务器获取了包含此值的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的答案是完美的。感谢大家的热情帮助! :)

6 个答案:

答案 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数组列表。