zoukankan      html  css  js  c++  java
  • Fastjson解析json时遇到问题之后——

    今天,2015年10月29日。

    在运行eclipse时,遇到如下问题:

    1  com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0
    2  at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:212)
    3  at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseRest(ASMJavaBeanDeserializer.java:96)
    4  at Fastjson_ASM_UpdateRequest_1.deserialze(Unknown Source)
    5  at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:513)
    6  at com.alibaba.fastjson.JSON.parseObject(JSON.java:244)
    7  at com.alibaba.fastjson.JSON.parseObject(JSON.java:220)
    8  at com.alibaba.fastjson.JSON.parseObject(JSON.java:179)
    9  at com.alibaba.fastjson.JSON.parseObject(JSON.java:327)

    看到这个,第一反应是解析的json格式不对,遂详细排查json格式问题。无奈怎么也找不到原因,在网上也没有找到解决方案。后无意间发现,原来是http请求方式错误。Get请求写成了Post请求。因此记录下这次的错误,以后不要再犯。

    另附http请求之POSTandGET。

    • POST篇:
     1 private static Token getRemoteAccessToken() {
     2         CloseableHttpClient httpClient = HttpClients.createDefault();
     3         HttpPost httppost = new HttpPost(URL);
     4         httppost.setHeader("Content-Type", ContentType);
     5         List<NameValuePair> params = new ArrayList<>();
     6         params.add(new BasicNameValuePair("grant_type", GrantTypeCredentials));
     7         params.add(new BasicNameValuePair("client_id", ClientId));
     8         params.add(new BasicNameValuePair("client_secret", ClientSecret));
     9         params.add(new BasicNameValuePair("scope", Scope));
    10         UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params, Charset.forName("UTF-8"));
    11         
    12         // 获取Token。
    13         Token token = null;
    14         httppost.setEntity(urlEncodedFormEntity);
    15         // 发送
    16         try (CloseableHttpResponse httpResponse = httpClient.execute(httppost)) {
    17             HttpEntity entity = httpResponse.getEntity();
    18             if (entity != null) {
    19                 String entityString = EntityUtils.toString(entity, Charset.forName("UTF-8"));
    20                 token = JSON.parseObject(entityString, Token.class);
    21             }
    22         } catch (IOException e) {
    23             LOGGER.error(ExceptionUtils.parseExceptionStackTrace(e));
    24         } finally {
    25             try {
    26                 httpClient.close();
    27             } catch (IOException e) {
    28                 LOGGER.error(ExceptionUtils.parseExceptionStackTrace(e));
    29             }
    30         }
    31         return token;
    32     }
    • GET篇:
     1 public Double getValue(String from,String to,Double value,String url) {
     2         StringBuilder sbUri = new StringBuilder(url);
     3         sbUri.append("?");
     4         sbUri.append("from=");sbUri.append(from);
     5         sbUri.append("&");
     6         sbUri.append("to=");sbUri.append(to);
     7         sbUri.append("&");
     8         sbUri.append("value=");sbUri.append(value.toString());
     9         
    10         //获取转换后value
    11         CloseableHttpClient httpClient = HttpClients.createDefault();
    12         HttpGet httpGet = new HttpGet(sbUri.toString()); 
    13         httpGet.setHeader("Content-Type", ContentType);
    14         
    15         UnitValue unitValue = null;        
    16         try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) {        
    17             HttpEntity entity = httpResponse.getEntity();
    18             if (entity != null) {
    19                 String entityString = EntityUtils.toString(entity, Charset.forName("UTF-8"));
    20                 unitValue = JSON.parseObject(entityString, UnitValue.class);            
    21                 value=unitValue.getValue();
    22             }
    23         } catch (IOException e) {
    24             LOGGER.error(ExceptionUtils.parseExceptionStackTrace(e));
    25         } finally {
    26             try {
    27                 httpClient.close();
    28             } catch (IOException e) {
    29                 LOGGER.error(ExceptionUtils.parseExceptionStackTrace(e));
    30             }
    31         }
    32         return value;
    33     }

                    

  • 相关阅读:
    MySQL事务知识要点(一)
    MySQL 安全体系知识要点
    MySQL 安全性知识要点
    #翻译#通往SQL Server安全级别2的阶梯:身份验证; 唐•吉利; 原文链接:Stairway to SQL Server Security Level 2: Authentication http://www.sqlservercentral.com/articles/Stairway+Series/109975/
    SQL子查询&视图&更新&删除思维导图-误点难点(附示例代码)
    #翻译#通往t
    香港中文大学-人脸识别进展-2014-06
    NotesMITLinearAlgebra
    Notes Berkerly Statistics 2.1X Week4
    Notes on Brain Study
  • 原文地址:https://www.cnblogs.com/iCcccy/p/4920881.html
Copyright © 2011-2022 走看看