GVKun编程网logo

JSON类型不匹配或org.json.jsonecxeption(json格式不正确)

13

在本文中,我们将带你了解JSON类型不匹配或org.json.jsonecxeption在这篇文章中,我们将为您详细介绍JSON类型不匹配或org.json.jsonecxeption的方方面面,并解

在本文中,我们将带你了解JSON类型不匹配或org.json.jsonecxeption在这篇文章中,我们将为您详细介绍JSON类型不匹配或org.json.jsonecxeption的方方面面,并解答json格式不正确常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的android – org.json.JSONException:值<!DOCTYPE类型java.lang.String无法转换为JSONObject、android – 错误org.json.JSONException:PROJECT_NAME没有值这是我的json、c# – Newtonsoft.Json.JsonReaderException:读完JSON内容后遇到的其他文本:、com.alibaba.fastjson.JSONException: exepct ''['', but error, pos 1, json : %255B%257B%2522l...

本文目录一览:

JSON类型不匹配或org.json.jsonecxeption(json格式不正确)

JSON类型不匹配或org.json.jsonecxeption(json格式不正确)

链接是
http://iipacademy.in/askpoll/ten_feed.php

异常在onPostExecute()方法(第4行)中:

Log.i("result", result);try {    if (result != null) {        JSONArray jsonArray = new JSONArray(result); // erreor        for (int i = 0; i < jsonArray.length(); i++) {            JSONObject objJson = jsonArray.getJSONObject(i);            TopTenGetterSetter obj = new TopTenGetterSetter();            obj.setQ(objJson.getString("question"));            obj.setA(objJson.getString("option1"));            obj.setB(objJson.getString("option2"));            obj.setC(objJson.getString("option3"));            obj.setD(objJson.getString("option4"));            polls.add(obj);                        }    }} catch (JSONException e) {    e.printStackTrace();    Toast.makeText(getApplicationContext(), "error",            Toast.LENGTH_SHORT).show();}

LOGCAT:

12-18 03:20:45.447: W/System.err(2790): org.json.JSONException: Value response of type java.lang.String cannot be converted to JSONArray12-18 03:20:45.447: W/System.err(2790):     at org.json.JSON.typeMismatch(JSON.java:111)12-18 03:20:45.447: W/System.err(2790):     at org.json.JSONArray.<init>(JSONArray.java:91)12-18 03:20:45.447: W/System.err(2790):     at org.json.JSONArray.<init>(JSONArray.java:103)12-18 03:20:45.447: W/System.err(2790):     at com.example.askpollie.LatestPollParticipated$FetchingEventsDetails.onPostExecute(LatestPollParticipated.java:188)12-18 03:20:45.447: W/System.err(2790):     at com.example.askpollie.LatestPollParticipated$FetchingEventsDetails.onPostExecute(LatestPollParticipated.java:1)12-18 03:20:45.447: W/System.err(2790):     at android.os.AsyncTask.finish(AsyncTask.java:631)12-18 03:20:45.447: W/System.err(2790):     at android.os.AsyncTask.access$600(AsyncTask.java:177)12-18 03:20:45.447: W/System.err(2790):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)12-18 03:20:45.447: W/System.err(2790):     at android.os.Handler.dispatchMessage(Handler.java:99)12-18 03:20:45.447: W/System.err(2790):     at android.os.Looper.loop(Looper.java:137)12-18 03:20:45.447: W/System.err(2790):     at android.app.ActivityThread.main(ActivityThread.java:5103)12-18 03:20:45.447: W/System.err(2790):     at java.lang.reflect.Method.invokeNative(Native Method)12-18 03:20:45.447: W/System.err(2790):     at java.lang.reflect.Method.invoke(Method.java:525)12-18 03:20:45.447: W/System.err(2790):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)12-18 03:20:45.447: W/System.err(2790):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)12-18 03:20:45.447: W/System.err(2790):     at dalvik.system.NativeStart.main(Native Method)12-18 03:20:45.447: D/dalvikvm(2790): GC_FOR_ALLOC freed 5131K, 55% free 4437K/9672K, paused 2ms, total 2ms

消息是一个数组,所以它的代码应该是什么或如何解决?

提前致谢 。。。

答案1

小编典典
org.json.JSONException: Value response of type java.lang.String cannot be converted to JSONArray

看起来响应是一个字符串而不是json数组

{  // json object node     "response": { // json object response        "result": 1,        "Message": [ // json array Message            {        // json object node                 "pollid": "98",                 "category": "Entertainment",                 "question": "what",  //  string                 "option1": "981.mov",

结果是一个json对象而不是json数组

JSONArray jsonArray = new JSONArray(result);

应该

JSONObject jObj = new JSONObject(result);JSONObject response = jObj.getJSONObject("response");//JSONObject jb = new JSONObject(response);JSONArray jr = response.getJSONArray("Message");for(int i=0;i<jr.length();i++){JSONObject jb1 = jr.getJSONObject(i);String question = jb1.getString("question");Log.i(".......",question);}

android – org.json.JSONException:值<!DOCTYPE类型java.lang.String无法转换为JSONObject

android – org.json.JSONException:值<!DOCTYPE类型java.lang.String无法转换为JSONObject

在这里,我想使用API​​密钥显示 JSON内容.但我无法获得身份验证.

我在JsonObject中收到错误:

org.json.JSONException: Value Authorization of type java.lang.String cannot be converted to JSONObject

在我的Android应用程序中,我只是传递API密钥和URL id以获取以下URL中的JSON响应.我使用JSON数组显示JSON内容.

但如果我:

public class AndroidAPiActivity extends Activity {

/*
 * FlickrQuery = FlickrQuery_url
 * + FlickrQuery_per_page
 * + FlickrQuery_nojsoncallback
 * + FlickrQuery_format
 * + FlickrQuery_tag + q
 * + FlickrQuery_key + FlickrApiKey
 */

String FlickrQuery_url = "http://192.138.11.9/api/interests/";
String FlickrQuery_per_page = "&per_page=1";
String FlickrQuery_nojsoncallback = "&nojsoncallback=1";
String FlickrQuery_format = "&format=json";
String FlickrQuery_tag = "&tags=";
String FlickrQuery_key = "&api_key=";

// Apply your Flickr API:
// www.flickr.com/services/apps/create/apply/?
   String FlickrApiKey = "f65215602df8f8af";

   EditText searchText;
   Button searchButton;
   TextView textQueryResult,textJsonResult;
   ImageView imageFlickrPhoto;
   Bitmap bmFlickr;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       searchText = (EditText)findViewById(R.id.searchtext);
       searchButton = (Button)findViewById(R.id.searchbutton);
       textQueryResult = (TextView)findViewById(R.id.queryresult);
       textJsonResult = (TextView)findViewById(R.id.jsonresult);
       imageFlickrPhoto = (ImageView)findViewById(R.id.flickrPhoto);
       searchButton.setonClickListener(searchButtonOnClickListener);
   }

   private Button.OnClickListener searchButtonOnClickListener
   = new Button.OnClickListener(){

 public void onClick(View arg0) {
  // Todo Auto-generated method stub
  String searchQ = searchText.getText().toString();
  String searchResult = QueryFlickr(searchQ);
  textQueryResult.setText(searchResult);
  String jsonResult = ParseJSON(searchResult);
  textJsonResult.setText(jsonResult);

  if (bmFlickr != null){
   imageFlickrPhoto.setimageBitmap(bmFlickr);
  }
 }};

   private String QueryFlickr(String q){

    String qResult = null;

    String qString =
      FlickrQuery_url
      + FlickrQuery_per_page
      + FlickrQuery_nojsoncallback
      + FlickrQuery_format
      + FlickrQuery_tag + q 
      + FlickrQuery_key + FlickrApiKey;

    HttpClient httpClient = new DefaultHttpClient();
       HttpGet httpGet = new HttpGet(qString);

       try {
  httpentity httpentity = httpClient.execute(httpGet).getEntity();

  if (httpentity != null){
   InputStream inputStream = httpentity.getContent();
   Reader in = new InputStreamReader(inputStream);
   BufferedReader bufferedreader = new BufferedReader(in);
   StringBuilder stringBuilder = new StringBuilder();

   String stringReadLine = null;

   while ((stringReadLine = bufferedreader.readLine()) != null) {
    stringBuilder.append(stringReadLine + "\n");
    }

   qResult = stringBuilder.toString();

  }

 } catch (ClientProtocolException e) {
  // Todo Auto-generated catch block
  e.printstacktrace();
 } catch (IOException e) {  
  // Todo Auto-generated catch block
  e.printstacktrace();
 }

       return qResult;
   }

   private String ParseJSON(String json){

    String jResult = null;
    bmFlickr = null;
    String key_id;
    String category;
    String subcategory;
    String title;
    String icon_image;

    try
     {
  JSONObject JsonObject = new JSONObject(json);
  JSONObject Json_photos = JsonObject.getJSONObject("interests");
  JSONArray JsonArray_photo = Json_photos.getJSONArray("interest");

  //We have only one photo in this exercise
  JSONObject FlickrPhoto = JsonArray_photo.getJSONObject(0);

  key_id = FlickrPhoto.getString("row_key");
  category = FlickrPhoto.getString("category");
  subcategory = FlickrPhoto.getString("subcategory");
   title = FlickrPhoto.getString("title");

  jResult = "\n key_id: " + key_id + "\n"
    + "category: " + category + "\n"
    + "subcategory: " + subcategory + "\n"
    + "title: " + title + "\n";

  bmFlickr = LoadPhotoFromFlickr(key_id,category,subcategory,title);

 } catch (JSONException e) {
  // Todo Auto-generated catch block
  e.printstacktrace();
 }

    return jResult;
   }

   private Bitmap LoadPhotoFromFlickr(
     String key_id,String category,String subcategory,String title){
    Bitmap bm= null;

    String icon_image = null;
 //   String FlickrPhotoPath ="";
   String FlickrPhotoPath ="http://182.72.180.34/media/"+icon_image+".jpg";

    URL FlickrPhotoUrl = null;

    try {

  FlickrPhotoUrl = new URL(FlickrPhotoPath);

  HttpURLConnection httpconnection = (HttpURLConnection) FlickrPhotoUrl.openConnection();
  httpconnection.setDoInput(true);
  httpconnection.connect();
  InputStream inputStream = httpconnection.getInputStream();
  bm = BitmapFactory.decodeStream(inputStream);

 } catch (MalformedURLException e) {
  // Todo Auto-generated catch block
  e.printstacktrace();
 } catch (IOException e) {
  // Todo Auto-generated catch block
  e.printstacktrace();
 }

    return bm;
   }
}

解决方法

更新:

基于HTML响应,我可以告诉你这不是JSON.该响应告诉我您的Web服务的URL不正确.

您需要检查您的网址.

额外信息/上一个答案:

看起来简单的答案是正确的 – 您的结果不是有效的JSON字符串.有关JSON应该是什么样的详细信息,请参见JSON.org网站.

查看JSON Parser Online – 我发现它在使用JSON时非常有用.

很奇怪你正在请求JSON,它没有正确地返回它 – 也许我错过了一些东西.

android – 错误org.json.JSONException:PROJECT_NAME没有值这是我的json

android – 错误org.json.JSONException:PROJECT_NAME没有值这是我的json

我收到错误org.json.JSONException:PROJECT_NAME没有值这是我的json

{"PROJECTS":[ 
         {
            "PROJECT_NUMBER": "2062",
            "PROJECT_NAME": "OPW 51183"
         },
         {
            "PROJECT_NUMBER": "404",
            "PROJECT_NAME": "404"
         },
         {
            "PROJECT_NUMBER": "2125",
            "PROJECT_NAME": "OPW 50016"
         },
         {
            "PROJECT_NUMBER": ""
         },
         {
            "PROJECT_NUMBER": "2130",
            "PROJECT_NAME": "OPW 51151 63rd & Shirley SEW S"
         },
         {
            "PROJECT_NUMBER": "2159",
            "PROJECT_NAME": "OPW 51226"
         }
        ]

    }

和鳕鱼是:

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

JSONObject obj=innerProjectarray.getJSONObject(i);
String projectnumber1=obj.getString("PROJECT_NUMBER");
String projectname1=obj.getString("PROJECT_NAME");
        }

有没有办法找到密钥,如果密钥不存在,那么np需要获取值od特定字符串帮助我谢谢

解决方法:

使用has检查Json中是否存在密钥.如果此对象具有name的映射,则返回true.

喜欢

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

    JSONObject obj = innerProjectarray.getJSONObject(i);
    if (obj.has("PROJECT_NUMBER")) {
        String projectnumber1 = obj.getString("PROJECT_NUMBER");
    }

    if (obj.has("PROJECT_NAME")) {
        String projectname1 = obj.getString("PROJECT_NAME");
    }
}

另一种方法是使用optString,如果存在,则返回按名称映射的值,必要时强制它.如果不存在此类映射,则返回空字符串.

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

    JSONObject obj = innerProjectarray.getJSONObject(i);

    String projNum = obj.optString("PROJECT_NUMBER"); 
    String projName = obj.optString("PROJECT_NAME"); 
    // and use both values. 
}

c# – Newtonsoft.Json.JsonReaderException:读完JSON内容后遇到的其他文本:

c# – Newtonsoft.Json.JsonReaderException:读完JSON内容后遇到的其他文本:

我在 JSON数组中遇到一个奇怪的问题,当从服务器接收时,我试图反序列化它,但它说

我创建了一个类,并尝试将其反序列化为该对象,但它说

课程如下.

class bundle
{
    public string msgid { get; set; }
    public string messagetype { get; set; }
    public string message { get; set; }
    public string from { get; set; }

}

例外:Newtonsoft.Json.JsonReaderException:完成读取JSON内容后遇到的其他文本:y.路径”,第1行,第93位.
   at Newtonsoft.Json.JsonTextReader.Read()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)
   在Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader,Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value,Type type,JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value)
   在Listener.Program.LogStatus(布尔接收,Byte []缓冲区,Int32长度)in Listener.Program.d__5.MoveNext()in —从前一个位置抛出异常的堆栈跟踪结束—
   在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
   在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
   在System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   在Listener.Program.d__1.MoveNext()

我得到的数组如下,

{"messagetype":"chatmsg","msgid":"123_119","from":"sam","message":"Hi there,good morning ! "}                                                                                                                            
{"messagetype":"chatmsg","msgid":"123_120","message":"how are you?"}                                                                                                                            

{"messagetype":"chatmsg","msgid":"6478316959_121","message":"this is msg"} ood morning !"}                                                                                                                            
{"messagetype":"ping"}g","message":"you are crazy"} orning ! "}

最后是意外的令牌.

解决方法

经过大量的工作,我想到了这个:

string final = string.Empty;
string name = encoder.GetString(buffer);
char []arr = name.ToArray();

boolean bln = true;
foreach (char item in arr)
{
    if (bln)
    {
        if (item == '}')
        {
            final += item.ToString();
            break;
        }
        else
        {
            final += item.ToString();
        }
    }
}

Console.WriteLine(final);

这将截断其余的字符.

com.alibaba.fastjson.JSONException: exepct ''['', but error, pos 1, json : %255B%257B%2522l...

com.alibaba.fastjson.JSONException: exepct ''['', but error, pos 1, json : %255B%257B%2522l...

com.alibaba.fastjson.JSONException: exepct ''['', but error, pos 1, json : %255B%257B%2522list%2522%253A%255B%257B%2522itemId%2522%253A1369331%252C%2522num%2522%253A2%257D%255D%257D%255D
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:672)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:662)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:657)
    at com.alibaba.fastjson.JSON.parseArray(JSON.java:514)
    at com.qingmu.core.controller.CartController.addGoodsToCartList(CartController.java:85)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

在使用tomcat8时候会出现的一个json格式字符串异常

这是因为我在进行cookie接收的cookie没有按照我想要的格式进行转换

需要手动进行转换(

cartList = JSON.parseArray(URLDecoder.decode(value,"UTF-8"), Cart.class);

)

今天关于JSON类型不匹配或org.json.jsonecxeptionjson格式不正确的分享就到这里,希望大家有所收获,若想了解更多关于android – org.json.JSONException:值<!DOCTYPE类型java.lang.String无法转换为JSONObject、android – 错误org.json.JSONException:PROJECT_NAME没有值这是我的json、c# – Newtonsoft.Json.JsonReaderException:读完JSON内容后遇到的其他文本:、com.alibaba.fastjson.JSONException: exepct ''['', but error, pos 1, json : %255B%257B%2522l...等相关知识,可以在本站进行查询。

本文标签: