使用C#将HTML字符串作为JSON输出

时间:2017-12-28 06:16:58

标签: c# html json

使用C#作为JSON输出的HTML字符串。

我希望在转换为JSON的同时替换“HTML包装器<和>之间”的每个实例。同时如果它的文本带有“引号”,那么它不应该替换为'引用。例如。 "since the 1500s"

代码 - 正在替换所有“引用”

public string Content
{
    get
    {
       return _content;
    }
    set
    {
       if (value != null)
       {
           this._content = this._content.Replace("\"", "'");     
       }
     }
}

我从我的视图中获取此格式的字符串。

E.g.  model.Content = "<p> Lorem Ipsum is simply dummy text of the printing <span id= "#" ids= "#" display= "inline" ></ span > and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever "since the 1500s".<br></p>";

我正在使用JsonConvert.SerializeObject

string output = JsonConvert.SerializeObject(model, Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });

预期字符串 - HTML标记中的所有双引号应转换为单引号,但文本引号应与使用C#

一样
 "content": "<p><b>Lorem Ipsum</b> is simply dummy <i>text </i>of the printing&nbsp;<span id='#' ids='#' display='inline'></span> and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever \"since the 1500s\".</p>",

2 个答案:

答案 0 :(得分:1)

我认为您想要替换&#34;的每个实例,即&lt;并且&gt;用&#39;。

所以,你寻找每个&#34;在你的字符串中,向后看一个&lt;,然后向前看一个&gt;。正则表达式看起来像:

(?<=\<[^<>]*)"(?=[^><]*\>)

所以你可以使用

outputString = Regex.Replace(inputString, "(?<=\\<[^<>]*)\"(?=[^><]*\\>)", "'");

然后你想逃避其他&#34;在你的字符串中。为此你可以使用

outputString = outputString.Replace(@"""", @"\""");

OR

outputString = outputString.Replace("\"", "\\\"");

我创建了一个控制台应用程序来测试它,

 Console.WriteLine("Enter The String : ");
 string input = Console.ReadLine();          
 string pattern = "(?<=\\<[^<>]*)\"(?=[^><]*\\>)";
 string output = Regex.Replace(input, pattern, "'");
 output = output.Replace(@"""", @"\""");
 Console.WriteLine(output);
 Console.ReadKey();

输入字符串是您提供的字符串,然后输出将是

<p> Lorem Ipsum is simply dummy text of the printing <span id= '#' ids= '#' display= 'inline' ></ span > and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever \"since the 1500s\".<br></p>

答案 1 :(得分:0)

最好用(\&#34;)替换所有double(&#34;)。这样您就可以将双引号存储为字符串的一部分。 敌人的例子:

string storeValue = "Subash \"Kharel\"";