我很抱歉我是初学者。
我尝试将值放入字符串名[],int age [],int hand [], 但是所有的值都是null。
我不知道哪个部分有问题。因为我是从youtube学到的。
我只想将数据存储到数组中。
谢谢
public class main extends AppCompatActivity {
String oName[] = new String [];
int oAge [] = new int [];
int oHand [] = new int [];
protected void onCreate(Bundle savedInstanceState) {...}
private class DownloadTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground (String... values) {
InputStream is = null;
String result = ""; //Get json?
String line;
try {
URL ua = new URL("https://api.myjson.com/bins/r5kim"); //json address
HttpURLConnection conn = (HttpURLConnection) ua.openConnection();
conn.setRequestMethod("GET");
conn.connect();
is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
while ((line = reader.readLine()) != null) {
result += line;
}
is.close();
JSONObject jo = new JSONObject(result); //get json
JSONArray op = jo.getJSONArray("opponents"); //json array?? parse??
for(int i = 0; i < op.length(); i++) {
oName[i] = op.getJSONObject(i).getString("name"); //Get null
oAge[i] = op.getJSONObject(i).getInt("age"); //Get null
oHand[i] = op.getJSONObject(i).getInt("hand"); //Get null
}
} catch (MalformedURLException e) { //exception
e.printStackTrace();
} catch (IOException e) { //exception
e.printStackTrace();
} catch (JSONException e) { //exception
e.printStackTrace();
}
return null;
}
}
答案 0 :(得分:0)
由于你没有发布json字符串,因此很难确定你做错了什么。
我能给你的最好建议是查看gson library这是Android上最常见的json解析器(有更多,这是我使用的)。 how to add reference
观看视频,在谷歌上搜索,也在这里搜索你会发现成千上万的“如何使用gson帖子”,但无论如何,我会为你提供最快的“如何”。
<强> 1。假设你有一个这样的字符串:
{
"id":1,
"name":"Little Mouse"
}
<强> 2。创建一个与json字符串
传递的对象匹配的对象public class MyObject{
private int id;
private String name;
//getters and setters
}
第3。现在初始化gson并将字符串解析为所需的对象
//Initialize Gson object with GsonBuilder (you can customize it, you will learn)
Gson gson = new GsonBuilder().create();
//parse your string using an object matching your output
MyObject myObject = gson.fromJson(myJsonString, MyObject.class);
这很简单,但如果您需要帮助,请自由询问
发布脚本:
您可以使用自定义参数和嵌套类来随意解析任何类。您只需创建一个模型类,其中包含您需要使用相同名称编写的参数(或者您可以显式显示所需的名称)并使用相同的属性类型(int,string,...)
这是你的模特:
public class myJsonModel{
private List<Opponent> opponents;
//getters and setters
}
public class Opponent{
private String name;
private String age;
private String hand;
//getters and setters
}
所以你的结果应该是
myJsonModel myObject = gson.fromJson(myJsonString, myJsonModel.class);