Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中访问json字符串并创建hashmap Android_Java_Android_Json_Hashmap - Fatal编程技术网

在java中访问json字符串并创建hashmap Android

在java中访问json字符串并创建hashmap Android,java,android,json,hashmap,Java,Android,Json,Hashmap,我有一个JSON字符串,我正试图从中检索信息。Json字符串如下所示 JSON字符串: { "information": { "device": { "id": 0 }, "user": { "id": 0 }, "data": [ { "datum": { "id"

我有一个JSON字符串,我正试图从中检索信息。Json字符串如下所示

JSON字符串:

{
    "information": {
        "device": {
            "id": 0
        },
        "user": {
            "id": 0
        },
        "data": [
            {
                "datum": {
                    "id": "00GF001",
                    "history_id": "9992BH",
                    "name": "abc",
                    "marks": 57,
                    "class": "B",
                    "type": "Student"
                }
            },
            {
                "datum": {
                    "id": "72BA9585",
                    "history_id": "78NAH2",
                    "name": "ndnmanet",
                    "marks": 70,
                    "class": "B",
                    "type": "Student"
                }
            },
            {
                "datum": {
                    "id": "69AHH85",
                    "history_id": "NN00E3006",
                    "name": "kit",
                    "department": "EF003",
                    "class": "A",
                    "type": "Employee"
                }
            },
            {
                "datum": {
                    "id": "09HL543",
                    "history_id": "34QWFTA",
                    "name": "jeff",
                    "department": "BH004",
                    "class": "A1",
                    "type": "Employee_HR"
                }
            }
        ]
    }
}
我正在尝试访问数据JSONArray和其中的相应数据。我根据学生、员工等类型区分了每个数据,并在hashmap中推送信息。 我用javascript成功地做到了这一点,但在Java中我很难做到

当我试图访问JSONArray时,它抛出异常

 try {
            JSONObject data = new JSONObject(dataInfo);
           // Log.d(TAG, "CHECK"+data.toString());
         JSONObject info = data.optJSONObject("information");
            if(info.getJSONArray("data").getString(0).equals("Student") > 0)  //exception here

                Log.d(TAG, "Data"+ data.getJSONArray("data").length()); //exception here too
            for(int m = 0; m < data.length(); m++){
                //   for(int s = 0; s < data[m].ge)
            }
        } catch (JSONException j){
            j.printStackTrace();
        }
试试看{
JSONObject数据=新的JSONObject(数据信息);
//Log.d(标记“CHECK”+data.toString());
JSONObject info=data.optJSONObject(“信息”);
if(info.getJSONArray(“data”).getString(0.equals(“Student”)>0)//此处异常
Log.d(TAG,“Data”+Data.getJSONArray(“Data”).length();//这里也有异常
对于(int m=0;m

创建hashmap的任何指针都是我拥有的相应类型。欣赏

如果dataInfo是您发布的json,那么您必须访问信息,并且从信息中,您可以访问数据:

 JSONObject data = new JSONObject(dataInfo);
 JSONObject info = data.optJSONObject("information");
 if (info != null) {
    JSONArray dataArray = info.optJSONArray("data")
 }

如果您试图访问
数据
对象的
类型
字段,您将需要如下内容:

JSONObject data = new JSONObject(dataInfo); // get the entire JSON into an object
JSONObject info = data.getJSONObject("information"); // get the 'information' object
JSONArray dataArray = info.getJSONArray("data"); // get the 'data' array

for (int i = 0; i < dataArray.length(); i++) {
    // foreach element in the 'data' array
    JSONObject dataObj = dataArray.getJSONObject(i); // get the object from the array
    JSONObject datum = dataObj.getJSONObject("datum"); // get the 'datum' object
    String type = datum.getString("type"); // get the 'type' string

    if ("Student".equals(type)) {
        // do your processing for 'Student' here
    }
}
JSONObject data=新的JSONObject(dataInfo);//将整个JSON放入一个对象中
JSONObject info=data.getJSONObject(“信息”);//获取“信息”对象
JSONArray dataArray=info.getJSONArray(“数据”);//获取“数据”数组
对于(int i=0;i

请注意,您必须处理异常处理、坏数据等。这段代码只是向您展示了如何获取所需数据的基本知识。我将每个单独的步骤分为自己的一行代码,这样我就可以清楚地评论每个步骤中发生的事情,但是如果您更方便的话,您可以将一些步骤合并为一行代码。

您提供的代码没有足够的信息来完全帮助您。例如,什么是当前的
?除非我遗漏了什么,否则您要返回的JSON中没有
“signals”
?我已经进行了编辑,很抱歉,但是如何从这个JSON字符串访问类型感谢我在遵循JSON源JSON字符串的层次结构时有点困惑和混乱。谢谢