android 字符串数组转int,类型为java.lang.String的Android值…无法转换为JSONArray

我的项目有一个WCF,可以从数据库获取记录并以JSON格式返回,如下所示:

{"GetNotesResult":"[{\"ID\":1,\"Title\":\"Note 1\",\"Content\":\"Hello Vu Chien Thang\",\"CreatedBy\":\"thangvc\"},{\"ID\":2,\"Title\":\"Note 2\",\"Content\":\"Hello Nguyen Thi Ngoc\",\"CreatedBy\":\"thangvc\"}]"}

我也有一个Android应用程序来使用JSON,这是我的代码:

private JSONArray getNotes(String UserName, String Password) {

JSONArray jarray = null;

JSONObject jobj = null;

try{

StringBuilder builder = new StringBuilder(URL);

builder.append("UserName=" + loggedInUser.getUserName());

builder.append("&");

builder.append("Password=" + loggedInUser.getPassword());

HttpClient client = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(builder.toString());

HttpResponse response = client.execute(httpGet);

int status = response.getStatusLine().getStatusCode();

if(status==200)

{

HttpEntity entity = response.getEntity();

String data = EntityUtils.toString(entity,"utf-8");

jobj = new JSONObject(data);

jarray = jobj.getJSONArray("GetNotesResult");

}

else

{

Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();

}

}

catch(ClientProtocolException e)

{

Log.d("ClientProtocol",e.getMessage());

}

catch(IOException e)

{

Log.d("IOException", e.getMessage());

}

catch(JSONException e)

{

Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();

}

catch(Exception e)

{

Log.d("Unhandle Error", e.getMessage());

}

return jarray;

}

我在处设置了断点,jarray =

jobj.getJSONArray("GetNotesResult");并从中得到了以下消息JSONException:

Value [{"ID":1,"Title":"Note 1","Content":"Hello Vu Chien Thang","CreatedBy":"thangvc"},{"ID":2,"Title":"Note 2","Content":"Hello Nguyen Thi Ngoc","CreatedBy":"thangvc"}] at GetNotesResult of type java.lang.String cannot be converted to JSONArray

我试图复制JSON字符串并粘贴到在线JSON解析器网站http://jsonviewer.stack.hu/上,它解析得很好。请帮我解决这个问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以把Java数组转换成JSON数组字符串,也可以把JSON数组字符串转换Java数组,但是JSON数组字符串不能直接转换成JSON数组对象,需要使用JSON库进行解析。 在Java中,可以使用Gson、Jackson等库将Java数组转换成JSON数组字符串,示例如下: ```java import com.google.gson.Gson; public class Main { public static void main(String[] args) { String[] arr = {"hello", "world"}; Gson gson = new Gson(); String jsonArrayString = gson.toJson(arr); System.out.println(jsonArrayString); // ["hello","world"] } } ``` 同样的,也可以将JSON数组字符串转换Java数组,示例如下: ```java import com.google.gson.Gson; public class Main { public static void main(String[] args) { String jsonArrayString = "[\"hello\",\"world\"]"; Gson gson = new Gson(); String[] arr = gson.fromJson(jsonArrayString, String[].class); System.out.println(arr[0]); // hello System.out.println(arr[1]); // world } } ``` 但是,如果要将JSON数组字符串转换成JSON数组对象,则需要使用JSON库进行解析,示例如下: ```java import org.json.JSONArray; public class Main { public static void main(String[] args) { String jsonArrayString = "[\"hello\",\"world\"]"; JSONArray jsonArray = new JSONArray(jsonArrayString); System.out.println(jsonArray.getString(0)); // hello System.out.println(jsonArray.getString(1)); // world } } ``` 在这个示例中,我们使用了`org.json.JSONArray`类来解析JSON数组字符串,并将其转换成JSON数组对象。需要注意的是,这里的JSON数组对象不是Java中的数组对象,而是JSON库中的一种数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值