这种问题有两个解决办法,使用后不管你是什么特殊字符还是什么西欧字体还是什么稀奇古怪的内容都可以完美解决!
 
1.要把即将转换为json的内容先转换为unicode编码,json转换无误后,使用json时,比如展示json里的内容,再将其转换为中文字符
2.这是个偏方法,使用过JSONObject lib 工具的都知道即使是一条乱码内容,依然可以存储到JSONObject里去。我看了它的存储源码,发现它是存储之前,将内容解释后再存储了。这样做得话,不管你什么,我先解释一遍再存储,可以避免存储时因特殊内容出现的问题。既然这样,偷过来它这个工具的特性,我利用它这个功能解释后再转json,自然就没问题了
 
 
总之就是将一切让json转换失败的特殊内容都转义或合法解释掉掉,避免出错
 
 
 
JSONObject 主要是net.sf.json.JSONObject这个类,jar包是json-lib-2.3-jdk15.jar
 
一定要用JSONObject存储后再使用解释方法,这两句代码不是放在这玩的
JSONObject json = new JSONObject();
json.put( "content", content);
 
JSONUtils类里的这个方法
JSONUtils.valueToString(json.get("content"));
 
 
 
第二个版本:
 
这句代码是将内容转成json,任何会引起json转换失败的符号都会被转义,但只是在action里或者是java后台里使用是没有问题的
content = com.zdzddzzd.util.string.StringUtils.string2Json(content);
 
但如果action结果页面里要用,并且要用json来解析的话这就用有问题了,这个方法使用过后,页面直接使用json转换js函数依然还是转换不了,去掉这个方法,使用sh-gs-tskj配置的一个jsp转换json工具,一句代码过后就搞定了,但他们也不能结合一起使用,因为在某些数据上,两次转义后的内容依然还是不可以转换json的,如果是页面展示建议使用jsp转换json工具
 
type="json",这个配置是要在struts文件中配置后才能使用的,transing自搞的一个东西,文件名叫这个struts-tags.tld,具体怎么玩到时拿sh-gs-tskj的代码再看下咯
< s:property type ="json" value ="#dw.content"/>
 
 
 

代码:
 
                                                       String content = StringUtils.defaultIfEmpty(dzhWeiboBO.getContent(), "");
                              content = WebUtil. clearHtmlTag(content, "utf-8");
                               /* 20130113 sv 转json */
                               try {
                                    content = com.linktong.util.string.StringUtils.string2Json(content);
                                    
                                    JSONObject json = new JSONObject();
                                    json.put( "content", content);
//                                  System.out.println( json);
                                    
                                     // 使用JSONWriter将content输出一个可用的JSON String
                                    String valueToString = JSONUtils.valueToString(json.get("content"));
//                                  System.out.println(valueToString);
                                    
                                     // 去除JSONUtils.valueToString返回的前后"符号
                                    valueToString = valueToString.substring(1);
                                    valueToString = valueToString.substring(0, valueToString.length() - 1);
                                    
                                    content = valueToString.replace("\"" , "" );
//                                  System.out.println(content);
                              } catch (Exception e) {
                                     // TODO Auto-generated catch block
                                    e.printStackTrace();
                              }
 
 
代码v2:
 
#action code
                              String content = StringUtils.defaultIfEmpty(dzhWeiboBO.getContent(), "");
//                            content = WebUtil.clearHtmlTag(content, "utf-8");
                               /* 转json    by sv 20130113 */
                               try {
//                                  content = com.linktong.util.string.StringUtils.string2Json(content);
                                    
                                    JSONObject json = new JSONObject();
                                    json.put( "content", content);
//                                  System.out.println( json);
                                    
                                     // 使用JSONWriter将content输出一个可用的JSON String
                                    String valueToString = JSONUtils.valueToString(json.get("content"));
//                                  System.out.println(valueToString);
                                    
                                     // 去除JSONUtils.valueToString返回的前后"符号
                                    valueToString = valueToString.substring(1);
                                    valueToString = valueToString.substring(0, valueToString.length() - 1);
                                    
                                    content = valueToString.replace("\"" , "" );
//                                  System.out.println(content);
                              } catch (Exception e) {
                                     // TODO Auto-generated catch block
                                    e.printStackTrace();
                              }
 
#jsp code
                         <td style='text-align : left' title='< s:property type="json" value="#dw.content"/> '>
                         <s:if test='#dw.content!=null&&#dw.content.getBytes().length>90' >
                               <s:property type="json" value="#dw.content.substring(0,45)" />...
                               </s:if>
                               <s:else>
                                     <s:property type="json" value="#dw.content" />
                               </s:else>
                         </td>
 
 
 

 
 
 
 
 
 

乱码字符引起的JSON转换失败的更多相关文章

  1. ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)

    本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...

  2. jQuery.ajax() datatype:“json" 转换失败

    当使用jQuery.ajax() 时,如果设置dataType:"json",如果返回的字符转换出错则不会调用success方法,而进入error方法,控制台中也不会出现错误信息 ...

  3. json转换对象中出现null属性的解决方法

    前言:当数据进行json转换时,当属性值为null时,json解析就会中断,导致接下来的数据无法正确获取.原则上来讲服务器端发送的json字符串不允许存在属性值为空的情况,但是如果服务器端发送了nul ...

  4. 1.JSON 转换对象失败问题 2.spring注入失效

    今天做项目中将一个json 字符串转换为对象,但结果怎么都转换不了!——————最后发现问题,原来是因为这个类我给他添加了带参数的构造器!导致转换失败! 在添加一个无参的构造器就好了! 第二个:今天调 ...

  5. Springboot中redisTemplate乱码或json转换问题

    问题1 用RedisTemplate存入map值的时候,用rdm可视化打开,看到的是转码之后的数据,如图: 存入的方法为: public boolean hmset(String key, Map&l ...

  6. json数据转换失败json_last_error int(4)

    最近在程序中使用json_decode($data,true);转换失败, 并且使用 json_last_error();方法返回最后一次转换的错误,json_last_error();返回int(4 ...

  7. Jackson框架,json转换

    Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在线博文:http://www.cnblo ...

  8. json转换(c#后台生成json的方法)

    此文转自:http://bbs.csdn.net/topics/380200497,为了方便自己记忆才以文章形式保存. using System; using System.Collections.G ...

  9. Python常见字符编码间的转换

    主要内容:     1.Unicode 和 UTF-8的爱恨纠葛     2.字符在硬盘上的存储     3.编码的转换     4.验证编码是否转换正确     5.Python bytes类型 前 ...

随机推荐

  1. PAT甲级1045. Favorite Color Stripe

    PAT甲级1045. Favorite Color Stripe 题意: 伊娃正在试图让自己的颜色条纹从一个给定的.她希望通过剪掉那些不必要的部分,将其余的部分缝合在一起,形成她最喜欢的颜色条纹,以保 ...

  2. chrome插件开发-----------将网址转化成二维码website2QRcode

    微信自带的浏览器无法输入链接,仅仅能通过扫描二维码实现.可是有时候看到一个有趣的站点,想分享,还得先去将链接转化成二维码的站点.先转成二维码.再扫描.有点麻烦.所以写了一个插件.直接生成二维码. 须要 ...

  3. 介绍:一款Mathematica的替代开源软件Mathetics

    Mathetics软件 1 以Python语言实现该系统 2 软件使用的语法与Mathematica同样 3 下载:http://www.mathics.org/ 4 手冊:http://www.ma ...

  4. 【java失业择业中】失业第四天:准备面试

    1.jQuery基础 学好jquery的一个基础条件是学好css层叠样式,因为很多时候这2个是一块配合使用的. 页面中很多需要jquery实现的效果只是通过jquery的选择器,选中要操作的元素,添加 ...

  5. WebService如何抛出干净的异常

    转载:http://www.cnblogs.com/ahdung/p/3953431.html 说明:[干净]指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message ...

  6. Java:泛型在编译时会被檫除,Eclipse 如何给出智能提示?

    背景 Java 的泛型是一种语法糖,编译时会被“檫除”,参考文章:http://docs.oracle.com/javase/tutorial/java/generics/,如果没有源代码,Eclip ...

  7. PTC点击网赚入门

    第一次接触PTC大概是11月19号左右,那时候第一感觉是"这不就是传销吗,肯定是骗人的",但是由于利润十分之大,又忍不住仔细研究了一下,我还是十分还是十分谨慎的,再加上程序员的头脑 ...

  8. Flume目录

    1. Flume的安装配置 2. flume和kafka整合(转) 3. Flume NG 配置详解(转) 4. Flume-NG一些注意事项(转) 5. FLume监控文件夹,将数据发送给Kafka ...

  9. Serlvet Response 输出1x1 图片

    import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import ja ...

  10. jquery点击click事件和blur事件冲突如何解决

    最近做了一个查询小功能,input输入框输入文字后,自动列出几条查询结果,可以键盘上下键或鼠标进行查询结果选择,并且点击输入框其他地方要隐藏这个列出的结果. 但比较头疼的是input上添加blur事件 ...