【问题标题】:How to fetch Json data from array of arrays in android如何从android中的数组数组中获取Json数据
【发布时间】:2020-08-18 13:24:43
【问题描述】:

例如,我有 JSON 格式的数组数组:

[
  [17,"Tracker-9210671","+918010804433",true,84,"869867039210671"],
  [18,"Gtrack_Ciaz","+918010804433",true,85,"869867039215308"], 
  [20,"Gtrack_Zeep_Trunk","+918010804433",true,86,"869867039210333"], 
  [19,"Gtrack_Zeep_Dashboard","+918010804433",true,87,"869867039209095"]
]

我想在我的 android 中获取这个 Json 数据,如何获取这个。我无法获取这个 JsonArray 谁能告诉这个代码应该是什么。

我所做的是(使用凌空抽射):

'''

 public class MainActivity extends AppCompatActivity {

 private TextView mTextViewResult;
 private RequestQueue mQueue;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  mTextViewResult = findViewById(R.id.text_view_result);
  Button buttonParse = findViewById(R.id.button_parse);

  mQueue = Volley.newRequestQueue(this);

  buttonParse.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    jsonParse();
   }
  });
 }
 private void jsonParse() {
  String url = "url";
  JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
   new Response.Listener < JSONArray > () {
    @Override
    public void onResponse(JSONArray response) { // Called when request successfull.


     try {
      for (int i = 0; i < response.length(); i++) {

       JSONArray jsonArray = response.getJSONArray(i);
       for (int j = 0; j < jsonArray.length(); j++) {
        JSONArray value = jsonArray.getJSONArray(j);

        int DB_ID = value.getInt(0);
        String Devie_Name = value.getString(1);
        String Mobile_Number = value.getString(2);
        Boolean Status = value.getBoolean(3);
        int Stock_Id = value.getInt(4);
        String Device_Id = value.getString(5);
        mTextViewResult.append(String.valueOf(DB_ID) + " , " + Devie_Name + " , " + Mobile_Number + " , " + String.valueOf(Status) + " , " + String.valueOf(Stock_Id) + " , " + Device_Id + "\n\n");

       }
      }

     } catch (JSONException e) {
      e.printStackTrace();
     }

    }


   }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) { // called when request not success.
     error.printStackTrace();
    }
   });

  mQueue.add(request);
 }
}

'''

我得到的错误:

org.json.JSONException: java.lang.Integer 类型的 0 处的值 17 不能 转换为 JSONArray。

【问题讨论】:

    标签: java arrays android-studio android-volley jsonparser


    【解决方案1】:

    只需将其添加到您的 Android Manifest 文件中即可。因为从 Android 9 操作系统我们需要添加这个属性android:usesCleartextTraffic="true"

    因为从Android 9 (API level 28) 开始,默认禁用明文支持。

     <application
            android:usesCleartextTraffic="true">
    

    【讨论】:

    • 我认为这可行,但我现在有一个新错误:org.json.JSONException: Value 17 at 0 of type java.lang.Integer cannot be convert to JSONArray This value is in Json array's 1st index 17,但我得到了这个错误。我是不是在 onResponse 方法中写错了代码。
    • @HarryPratapSingh 然后 JSON 解析代码有问题..
    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2014-08-12
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多