将字符串转换为JSON数组

Kas*_*sma 75 java android json

我从Web服务获得以下字符串的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"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我在String网上验证了这一点,似乎是正确的.现在我在android开发中使用以下代码来利用

JSONArray jsonArray = new JSONArray(readlocationFeed);
Run Code Online (Sandbox Code Playgroud)

这会抛出异常类型不匹配的异常.

kyo*_*ogs 143

在这里你得到JSONObject所以改变这一行:

JSONArray jsonArray = new JSONArray(readlocationFeed); 
Run Code Online (Sandbox Code Playgroud)

以下内容:

JSONObject jsnobject = new JSONObject(readlocationFeed);
Run Code Online (Sandbox Code Playgroud)

之后

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


San*_*waj 34

输入字符串

[
   {
      "userName": "sandeep",
      "age": 30
   }, 
   {
      "userName": "vivan",
      "age": 5
   }
]
Run Code Online (Sandbox Code Playgroud)

将字符串转换为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);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

产量

{"userName":"sandeep","age":30}
{"userName":"vivan","age":5}
Run Code Online (Sandbox Code Playgroud)


Ara*_*lur 21

使用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);
Run Code Online (Sandbox Code Playgroud)

使用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);
Run Code Online (Sandbox Code Playgroud)

  • 第二个代码片段中似乎存在错误,因为`gson`对象已创建但未使用. (3认同)

ρяσ*_*я K 16

您将需要转换给定的字符串JSONObject而不是JSONArray因为当前String包含JsonObject作为根元素而不是JsonArray:

JSONObject jsonObject = new JSONObject(readlocationFeed);
Run Code Online (Sandbox Code Playgroud)


Fur*_*rqi 5

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

}
Run Code Online (Sandbox Code Playgroud)

或将其转换为 JSONOBJECT

JSONObject jsonobj = new JSONObject(readlocationFeed);
JSONArray jsonArray = jsonobj.getJSONArray("locations");
Run Code Online (Sandbox Code Playgroud)