简体   繁体   English

如何将多维JSON数组转换为多维Java数组

[英]How to convert Multidimensional JSON Array into Multidimensional Java Array

Response of JSON JSON的回应

[{
    "ETag": "c28c2a1d",
    "Id": "566668257",
    "Links": [{
        "Href": "\/v1\/companies\/566668257",
        "Rel": "self"
    }, {
        "Href": "\/v1\/companies\/566668257",
        "Rel": "parent"
    }],
    "Address": "412 S Van Buren",
    "AddressParsed": {
        "Name": "Van Buren",
        "Number": "412",
        "PreDirectional": "S"
    },
    "City": "Weiner",
    "CompanyName": "Greenway Equipment Inc",
    "FirstName": "John",
    "LastName": "Conner",
    "Location": {
        "Latitude": 35.621407,
        "Longitude": -90.910036
    },
    "Phone": "8706847720",
    "PostalCode": "72479",
    "StateProvince": "AR",
    "ParentCompany": "566668257"
}]

My current code but I don't know how to get elements of Links : 我当前的代码,但我不知道如何获取Links元素:

public void parseJSON(String parse) throws JSONException {
    System.out.println("parse json");

    JSONArray jsonarray = new JSONArray(parse);

    int parselength = jsonarray.length();

    JSONObject arraynode ;

    String[] ID = new String[parselength];
    String[] Etag = new String[parselength];
    String[] City = new String[parselength];        
    String[] Address = new String[parselength];
    **//String[][] Links = new String[parselength][parselength];** 

    System.out.println("parse"+parselength);

    String strCSV = "";

    strCSV = "ID, Etag, Links, Address\r\n"; 
    for(int i=0; i<parselength-1; i++){

         arraynode = jsonarray.getJSONObject(i);

         ID[i] = arraynode.getString("Id");
         City[i] = arraynode.getString("City");
         Etag[i] = arraynode.getString("ETag");
         Address[i] = arraynode.getString("Address");

         //JSONArray innerLink = new JSONArray(arraynode.getString("Links"));

         strCSV += Etag[i]+","+ID[i]+","+City[i]+","+Address[i]+"\r\n";    //   
    }
}

I can see the multidimensional array data in the inner loop when i check it from system.out.println but when i convert it into CSV it does not copy in CSV. 当我从system.out.println检查它时,我可以在内部循环中看到多维数组数据,但是当我将其转换为CSV时,它不会以CSV复制。

Can any on help me out in this. 在这方面可以帮助我吗?


Links is a field of my JSON Array as you can see in the response of JSON Array. 链接是我的JSON数组的一个字段,您可以在JSON Array的响应中看到。 It is a Multidimensional array. 它是一个多维数组。

When I execute my code it throws a error that Links not found. 当我执行我的代码时,它会引发一个错误,即找不到链接。

My Ques is that how can I Convert this JSON Array into Java Array ? 我的问题是,如何将这个JSON数组转换为Java Array? As i have done for the rest of the fields. 正如我为其余领域所做的。

your for loop should be till i < parselength 您的for循环应一直到i <parselength

public void parseJSON(String parse) throws JSONException { System.out.println("parse json");

    JSONArray jsonarray = new JSONArray(parse);

    int parselength = jsonarray.length();

    JSONObject arraynode ;

    String[] ID = new String[parselength];
    String[] Etag = new String[parselength];
    String[] City = new String[parselength];        
    String[] Address = new String[parselength];
    **//String[][] Links = new String[parselength][parselength];** 

    System.out.println("parse"+parselength);

    String strCSV = "";

    strCSV = "ID, Etag, Links, Address\r\n"; 
    for(int i=0; i<parselength; i++){

         arraynode = jsonarray.getJSONObject(i);

         ID[i] = arraynode.getString("Id");
         City[i] = arraynode.getString("City");
         Etag[i] = arraynode.getString("ETag");
         Address[i] = arraynode.getString("Address");

         //JSONArray innerLink = new JSONArray(arraynode.getString("Links"));

         strCSV += Etag[i]+","+ID[i]+","+City[i]+","+Address[i]+"\r\n";    //   
    }
}

Maybe this will help.... Links itself is a JSONArray so you have to iterate through it also. 也许这会有所帮助。...链接本身是一个JSONArray,因此您还必须对其进行迭代。

for (int i = 0; i < parselength; i++) {

            arraynode = jsonarray.getJSONObject(i);
            ID[i] = arraynode.getString("Id");
            City[i] = arraynode.getString("City");
            Etag[i] = arraynode.getString("ETag");
            Address[i] = arraynode.getString("Address");

            JSONArray jsonarraylink = new JSONArray(arraynode.getJSONArray("Links").toString());

            int linklength = jsonarraylink.length();
            Links[i] = new String[linklength];
            for (int j = 0; j < linklength; j++) {
                linknode = jsonarraylink.getJSONObject(i);
                Links[i][j] = linknode.getString("Href");
                System.out.println(linknode.getString("Href"));
            }
            //JSONArray innerLink = new JSONArray(arraynode.getString("Links"));

            strCSV += Etag[i] + "," + ID[i] + "," + City[i] + "," + Address[i] + "\r\n";    //   
        }
public void parseJSON(String parse) throws JSONException {
    System.out.println("Parse JSON Array into Java Array");

    JSONArray jsonarray = new JSONArray(parse);

    int parselength = jsonarray.length();

    JSONObject arraynode ;

    String[] ID = new String[parselength];
    String[] Etag = new String[parselength];
    String[] City = new String[parselength];        
    String[] Address = new String[parselength];
    String[][] Links = new String[parselength][]; 
    //String[] Href = new String[parselength];
    //String[] Rel = new String[parselength];

    System.out.println("Json Array Length is: "+parselength);

    String strCSV = "";

    strCSV = "ID, Etag, City, Address, Href, Rel\r\n"; 
    for(int i=0; i<parselength; i++){

         arraynode = jsonarray.getJSONObject(i);

         ID[i] = arraynode.getString("Id");
         Etag[i] = arraynode.getString("ETag");
         City[i] = arraynode.getString("City");
         Address[i] = arraynode.getString("Address");

         //Href[i] = arraynode.getString("Href");
         //Rel[i] = arraynode.getString("Rel");

         JSONArray jsonarraylink = new JSONArray(arraynode.getJSONArray("Links").toString());
         int linklength = jsonarraylink.length();
         Links[i] = new String[linklength];
         for (int j = 0; j < linklength; j++) {
             arraynode = jsonarraylink.getJSONObject(i);
             Links[i][j] = arraynode.getString("Href");
             Links[i][j] = arraynode.getString("Rel");
             //Href[j] = arraynode.getString("Href");
             //Rel[j] = arraynode.getString("Rel");
             System.out.println(arraynode.getString("Href"));
             System.out.println(arraynode.getString("Rel"));
             strCSV += Etag[i]+","+ID[i]+","+City[i]+","+Address[i]+","+Links[i][j]+"\r\n";    // ,"+Href[j]+","+Rel[j]+"
         }                       
         //strCSV += Etag[i]+","+ID[i]+","+City[i]+","+Address[i]+"\r\n";    // ,"+Links[i]+"
    }       
    //CSV method is called with the string(strCSV) parameter. 
    Convertor(strCSV);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM