刚到android。我正在创建一个解析JSON数据并将其显示在ListView中的Android项目。我正在使用Eclipse来创建项目。我在res的子文件夹的原始文件夹中创建了一个名为userinput.json的文件。我已经在文件中提供了这些JSON数据。如何从JSON数据文件创建JSON数组?
[
{"name":"Company A", "hometown":"NJ"},
{"name":"Company B", "hometown":"PA"},
{"name":"Company C", "hometown":"CT"},
{"name":"Company D", "hometown":"NY"},
{"name":"Company E", "hometown":"NJ"}
]
我的要求是将原始资源中声明的这个JSON数据转换成JSON数组。 因为我已经在一个文件中声明了json数据,所以我必须从资源中访问它,因此我使用BufferedReader来读取文件。 但试图将StringBuilder对象转换为JSON数组时,我返回null。 这是我写的代码:
BufferedReader jsonReader = new BufferedReader(new InputStreamReader(
this.getResources().openRawResource(R.raw.userinput)));
StringBuilder jsonBuilder = new StringBuilder();
try {
for (String line = null; (line = jsonReader.readLine()) != null;)
{
jsonBuilder.append(line).append("\n");
}
jTokener = new JSONTokener(jsonBuilder.toString());
jsonArray = new JSONArray(jTokener.toString());
}
catch (Exception e)
{
throw new RuntimeException(e);
}
ArrayList<User> newArrayOfUsers = User.JsonData(jsonArray);
在一个单独的Java文件我有以下两种方法来我的JSON数组转换成Java对象:
public User(JSONObject object)
{
try
{
this.name = object.getString(name);
this.hometown = object.getString(hometown);
}
catch(JSONException e)
{
e.printStackTrace();
}
}
public static ArrayList<User> JsonData(JSONArray jsonArray)
{
ArrayList<User> users = new ArrayList<User>();
for(int i = 0; i < jsonArray.length(); i++)
{
try
{
users.add(new User(jsonArray.getJSONObject(i)));
}
catch(JSONException e)
{
e.printStackTrace();
}
}
return users;
}
我不知道,无论是上午以正确的方式做到这一点,任何人都可以请指导我如何从StringBuilder获取JSON数组?
没有必要'JSONTokener'如果你正在使用'JSONArray' – Selvin 2014-11-06 13:13:53
你能告诉我怎么转换我在Stringbuilder对象中获取的数据给JSONArray? – Harikrishnan 2014-11-06 13:21:04
FSM保存我...... **以与放入JSONTokener构造函数相同的方式** ......爱因斯坦对人类是正确的... – Selvin 2014-11-06 13:22:05