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

问题是 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"

    },

烙印99
浏览 318回答 3
3回答

人到中年有点甜

请将结果转换为JSONObjectJSONObject jsonObject = new JSONObject(结果);然后尝试得到JSONArrayJSONArray arryJ = jsonObject.getJSONArray("记录");请检查 jsonObject 不为 null,因为你们也都返回了错误消息。您需要以不同的方式管理错误。还分享您的 json,以便我们可以与您分享确切的问题。更新答案::为了避免解析错误,您可以检查if(jsonObject.hasKey("records")){  //get Value of records}

潇潇雨雨

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

慕仙森

问题实际上出在 JSONArray jarray 上。该语句之前必须有一个 JSONObject。喜欢-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject a = new JSONObject(s);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray jArray = a.getJSONArray("records");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i<jArray.length();i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject json_data = jArray.getJSONObject(i);当没有给 JSON 数组指定名称时,应该使用上面的代码。这意味着在上面的 JSON 中,如果“记录”不存在,那么问题中的代码将起作用。意思是,这会起作用-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //JSONObject a = new JSONObject(s);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray jArray = a.getJSONArray(s);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i<jArray.length();i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject json_data = jArray.getJSONObject(i);感谢所有帮助和尝试过的人!!!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java