为了账号安全,请及时绑定邮箱和手机立即绑定

org.json.JSONException: java.lang.String 类型的值

org.json.JSONException: java.lang.String 类型的值

烙印99 2023-06-28 15:25:27
问题是 json 是从 url 中获取的(我这么说是因为 url 的整个 json 内容都显示在“logcat”上),但不知何故它没有转换为“jsonarray”。也许语法不正确或其他什么,但我已经检查了所有内容,看起来没问题,但仍然抛出此异常。查看代码并检查 - JSONArray jArray = new JSONArray(result);这条线可能是问题所在。“结果”是一个字符串缓冲区类型,它在函数中被转换为字符串,doInBackground然后被发送到onPostExecute函数,由函数接收JSONArray,然后执行其余部分。但据我所知,问题是将“结果”转换为JSONArray. 这就是抛出的异常所说的。现在我添加了一行“conn.connect();” 并评论“conn.DoOutput(true)”。现在,我的整个 json 页面正在被获取并显示一条警告:“JSONObject 类型的‘整个 json 页面’的值无法转换”非常感谢那些提供帮助的人!这是我的 JSON 文件内容 -    {  "records": [    {      "id": "1",      "Email": "cde@algowire.com",      "FirstName": "CDE",      "LastName": "CDE",      "Password": "cde",      "Category": "Chef",      "Descrption": "cde",      "Tagline": "Chef LifeStyle",      "Experience": "2 year 2 months",      "CurrentWork": "AlgowireTechnologies",      "Achievements": "got a prize ",      "Hobbies": "playing,dancing etc"    },    {      "id": "2",      "Email": "abc@algowire.com",      "FirstName": "ABC",      "LastName": "XYZ",      "Password": "abc",      "Category": "Engineer",      "Descrption": "abc",      "Tagline": "Engineer LifeStyle",      "Experience": "1 year 3 months",      "CurrentWork": "AlgowireTechnologies",      "Achievements": "got a prize ",      "Hobbies": "playing,dancing etc"    },    {      "id": "3",      "Email": "demo@algowire.com",      "FirstName": "DEMO",      "LastName": "USER",      "Password": "demo",      "Category": "Doctor",      "Descrption": "demo",      "Tagline": "Doctor LifeStyle",      "Experience": "2 year 5 months",      "CurrentWork": "AlgowireTechnologies",      "Achievements": "got a prize ",      "Hobbies": "playing,dancing etc"    },
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

请将结果转换为JSONObject


JSONObject jsonObject = new JSONObject(结果);


然后尝试得到JSONArray


JSONArray arryJ = jsonObject.getJSONArray("记录");


请检查 jsonObject 不为 null,因为你们也都返回了错误消息。您需要以不同的方式管理错误。


还分享您的 json,以便我们可以与您分享确切的问题。


更新答案::


为了避免解析错误,您可以检查


if(jsonObject.hasKey("records")){

  //get Value of records

}


查看完整回答
反对 回复 2023-06-28
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

第一个问题是,在 catch 中,您将异常作为函数结果 ( return e.toString()) 返回。

其次,我认为您的 JSON 存在问题。


查看完整回答
反对 回复 2023-06-28
?
慕仙森

TA贡献1827条经验 获得超7个赞

问题实际上出在 JSONArray jarray 上。该语句之前必须有一个 JSONObject。喜欢-


            JSONObject a = new JSONObject(s);

            JSONArray jArray = a.getJSONArray("records");


            for(int i=0;i<jArray.length();i++){

                JSONObject json_data = jArray.getJSONObject(i);

当没有给 JSON 数组指定名称时,应该使用上面的代码。这意味着在上面的 JSON 中,如果“记录”不存在,那么问题中的代码将起作用。意思是,这会起作用-


            //JSONObject a = new JSONObject(s);

            JSONArray jArray = a.getJSONArray(s);


            for(int i=0;i<jArray.length();i++){

                JSONObject json_data = jArray.getJSONObject(i);

感谢所有帮助和尝试过的人!!!!


查看完整回答
反对 回复 2023-06-28
  • 3 回答
  • 0 关注
  • 317 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信