解析错误富文本json字符串(带双引号)的快速解决方法

 更新时间:2016年08月04日 10:55:19   投稿:jingxian  
下面小编就为大家带来一篇解析错误富文本json字符串(带双引号)的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

公司的项目,通过json传回来的是这么个东西:

NewsId":"94f52614-8764-46d7-a5fe-d0da1fe878ed","NewsTitle":"大型公选课《可持续发展与未来》系列二之现代经济(绿色经济)开始网上选课报名","NewsContent":"<span style="font-size:12pt;font-family:宋体;color:black;line-height:150%;"><span>近日,伴随着我校郑时龄院士、童小华教授分别在四平、嘉定举行的精彩演讲,本学期我校着力打造的大型公共选修课程《可持续发展与未来》之系列一已经圆满结束。该课程也是我校</span>“<span>可持续发展辅修专业</span>”<span>的核心必修课程之一。</span></span> 
<p style="text-indent:21pt;">
</p>.........
</span>

各种查询之后发现无法解析的根本原因就是里面有双引号" " "和反斜杠" \ ".

还不能直接对json进行转义,否则会将json本身自带的双引号都给转义了,所以不能暴力转义

上网找的方法:

//将坏的json数据里面的双引号,改为中文的双引号(啥都行,只要不是双引号就行)
	public String jsonStringConvert(String s){
    		char[] temp = s.toCharArray();    
    		int n = temp.length;
    		for(int i =0;i<n;i++){
      	if(temp[i]==':'&&temp[i+1]=='"'){
          for(int j =i+2;j<n;j++){
            if(temp[j]=='"'){
              if(temp[j+1]!=',' && temp[j+1]!='}'){
                temp[j]='”';
              }else if(temp[j+1]==',' || temp[j+1]=='}'){
                break ;
              }
            }
          }  
      	}
    }    
    return new String(temp);
  }</span>

此方法能将json本身的双引号以外的双引号转义为中文的双引号(其他什么都行)。这样就能够转义为正确的json字符串。

备忘:

在此方法之前,还要将html代码去空格,否则json也不能够解析,去空格方法:

public String replaceBlank(String str) {
		String dest = "";
	if (str != null) {
			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
		Matcher m = p.matcher(str);
			dest = m.replaceAll("");
			// Pattern p2 = Pattern.compile("\\s*\"");
			// Matcher m2 = p2.matcher(dest);
			// dest = m2.replaceAll("\'");
			dest = dest.replace("=\"", "='");
			p = Pattern.compile("\"\0*>");
			m = p.matcher(dest);
			dest = m.replaceAll(">'");
		}
		return dest;
}</span>

以上这篇解析错误富文本json字符串(带双引号)的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Json序列化和反序列化通用的封装完整代码

    基于Json序列化和反序列化通用的封装完整代码

    JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。下面通过实例代码给大家分享Json序列化和反序列化通用的封装,需要的的朋友参考下吧
    2017-07-07
  • C#使用Microsoft消息队列(MSMQ)的示例详解

    C#使用Microsoft消息队列(MSMQ)的示例详解

    Microsoft Message Queuing (MSMQ) 是在多个不同的应用之间实现相互通信的一种异步传输模式,本文主要介绍了C#如何使用Microsoft消息队列,需要的可以了解下
    2024-01-01
  • C# 利用PdfSharp生成Pdf文件的示例

    C# 利用PdfSharp生成Pdf文件的示例

    这篇文章主要介绍了C# 利用PdfSharp生成Pdf文件的示例,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04
  • C#实现Windows服务安装卸载开启停止

    C#实现Windows服务安装卸载开启停止

    本文主要介绍了C#实现Windows服务安装卸载开启停止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • C# PLINQ 内存列表查询优化历程

    C# PLINQ 内存列表查询优化历程

    这篇文章主要介绍了C# PLINQ 内存列表查询优化历程的相关资料,需要的朋友可以参考下
    2016-03-03
  • C# Timer控件学习之使用Timer解决按钮幂等性问题

    C# Timer控件学习之使用Timer解决按钮幂等性问题

    Timer控件又称定时器控件或计时器控件,该控件的主要作用是按一定的时间间隔周期性地触发一个名为Tick的事件,因此在该事件的代码中可以放置一些需要每隔一段时间重复执行的程序段,这篇文章主要介绍了关于C#使用Timer解决按钮幂等性问题的相关资料,需要的朋友可以参考下
    2022-10-10
  • C# Winform实现自定义分页控件

    C# Winform实现自定义分页控件

    一些第三方的分页控件要么就是界面不够美观大方,要么就是使用起来感觉很麻烦,所以本文就为大家介绍一下如何利用Winform自定义分页控件,需要的可以参考一下
    2023-07-07
  • C#中加载dll并调用其函数的实现方法

    C#中加载dll并调用其函数的实现方法

    下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • C#隐式运行CMD命令(隐藏命令窗口)

    C#隐式运行CMD命令(隐藏命令窗口)

    这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下
    2015-06-06
  • 在winform中嵌入第三方软件窗体的实践分享

    在winform中嵌入第三方软件窗体的实践分享

    这篇文章主要介绍了在winform中如何嵌入第三方软件窗体的实践分享,文中通过代码示例和图文给大家介绍的非常详细,具有一定参考价值,需要的朋友可以参考下
    2024-03-03

最新评论