剛到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