【发布时间】:2020-05-05 05:38:18
【问题描述】:
我想从 API 获取带有 JSON 的 JSON 对象列表。例如affiliate.itunes 但是对于 gson,我不能抛出 jsonObject,我必须为此母校使用 java JSONObject 和 JSONArray 类。 是否可以使用 gson lib 完全处理这个问题?
这是我复制到我的 android raw 文件夹中的 json 文件
这是我的代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
InputStream inputStream = getResources().openRawResource(R.raw.file);
String jsonStr = streamToString(inputStream);
try {
JSONObject jsonObject = new JSONObject(jsonStr);
JSONArray jsonArray = jsonObject.getJSONArray("results");
Type type = new TypeToken<List<BandJsonResult>>(){}.getType();
List<BandJsonResult> jsonResults = gson.fromJson(jsonArray.toString(),type);
for(int i = 0 ; i < jsonResults.size() ; i++){
Log.e("JSON " + i ,jsonResults.get(i).toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
private String streamToString(InputStream stream) {
InputStreamReader reader = new InputStreamReader(stream);
BufferedReader bufferedReader = new BufferedReader(reader);
StringBuilder result = new StringBuilder();
String line = "";
try {
while ((line = bufferedReader.readLine()) != null) {
result.append(line);
}
}catch (IOException ex){
ex.printStackTrace();
}
return result.toString();
}
}
【问题讨论】: