[java] 문자열을 JSON 배열로 변환

웹 서비스에서 JSON의 다음 문자열이 있고 이것을 JSONarray

{
    "locations": [
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        },
        {
            "lat": "23.053",
            "long": "72.629",
            "location": "ABC",
            "address": "DEF",
            "city": "Ahmedabad",
            "state": "Gujrat",
            "phonenumber": "1234567"
        }
    ]
}

나는 이것을 String온라인으로 확인했는데 올바른 것 같습니다. 이제 Android 개발에서 다음 코드를 사용하여

JSONArray jsonArray = new JSONArray(readlocationFeed);

유형 불일치 예외 예외가 발생합니다.



답변

여기에 JSONObject가 있으므로 다음 줄을 변경하십시오.

JSONArray jsonArray = new JSONArray(readlocationFeed);

다음과 함께 :

JSONObject jsnobject = new JSONObject(readlocationFeed);

이후

JSONArray jsonArray = jsnobject.getJSONArray("locations");
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject explrObject = jsonArray.getJSONObject(i);
}


답변

입력 문자열

[
   {
      "userName": "sandeep",
      "age": 30
   },
   {
      "userName": "vivan",
      "age": 5
   }
]

문자열을 JSON으로 변환하는 간단한 방법

public class Test
{

    public static void main(String[] args) throws JSONException
    {
        String data = "[{\"userName\": \"sandeep\",\"age\":30},{\"userName\": \"vivan\",\"age\":5}]  ";
        JSONArray jsonArr = new JSONArray(data);

        for (int i = 0; i < jsonArr.length(); i++)
        {
            JSONObject jsonObj = jsonArr.getJSONObject(i);

            System.out.println(jsonObj);
        }

    }
}

산출

{"userName":"sandeep","age":30}
{"userName":"vivan","age":5}


답변

json lib 사용 :-

String data="[{"A":"a","B":"b","C":"c","D":"d","E":"e","F":"f","G":"g"}]";
Object object=null;
JSONArray arrayObj=null;
JSONParser jsonParser=new JSONParser();
object=jsonParser.parse(data);
arrayObj=(JSONArray) object;
System.out.println("Json object :: "+arrayObj);

GSON lib 사용 :-

Gson gson = new Gson();
String data="[{\"A\":\"a\",\"B\":\"b\",\"C\":\"c\",\"D\":\"d\",\"E\":\"e\",\"F\":\"f\",\"G\":\"g\"}]";
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = (JsonArray) jsonParser.parse(data);


답변

현재 문자열 이 다음 대신 루트 요소로 포함되어 있기 때문에 주어진 문자열을 JSONObject대신 변환해야합니다 .JSONArrayJsonObjectJsonArray

JSONObject jsonObject = new JSONObject(readlocationFeed);


답변

String b = "[" + readlocationFeed + "]";
JSONArray jsonArray1 = new JSONArray(b);
jsonarray_length1 = jsonArray1.length();
for (int i = 0; i < jsonarray_length1; i++) {

}

또는 JSONOBJECT로 변환

JSONObject jsonobj = new JSONObject(readlocationFeed);
JSONArray jsonArray = jsonobj.getJSONArray("locations");


답변

다음 코드를 시도하십시오.

try {
    Log.e("log_tag", "Error in convert String" + result.toString());
    JSONObject json_data = new JSONObject(result);

    String status = json_data.getString("Status");
    {
        String data = json_data.getString("locations");
        JSONArray json_data1 = new JSONArray(data);
        for (int i = 0; i < json_data1.length(); i++) {
            json_data = json_data1.getJSONObject(i);

            String lat = json_data.getString("lat");
            String lng = json_data.getString("long");
        }
    }
}


답변

응답이 이렇다면

"GetDataResult": "[{\"UserID\":1,\"DeviceID\":\"d1254\",\"MobileNO\":\"056688\",\"Pak1\":true,\"pak2\":true,\"pak3\":false,\"pak4\":true,\"pak5\":true,\"pak6\":false,\"pak7\":false,\"pak8\":true,\"pak9\":false,\"pak10\":true,\"pak11\":false,\"pak12\":false}]"

다음과 같이 구문 분석 할 수 있습니다.

JSONObject jobj=new JSONObject(response);
        String c = jobj.getString("GetDataResult");
        JSONArray jArray = new JSONArray(c);
        deviceId=jArray.getJSONObject(0).getString("DeviceID");

여기서 JsonArray 크기는 1입니다. 그렇지 않으면 값을 얻기 위해 for 루프를 사용해야합니다.