Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向类类型添加序列化json并序列化该类而不获取\u0022_C#_.net - Fatal编程技术网

C# 如何向类类型添加序列化json并序列化该类而不获取\u0022

C# 如何向类类型添加序列化json并序列化该类而不获取\u0022,c#,.net,C#,.net,尝试将序列化字符串添加到另一个类字符串类型,则该类需要序列化,但由于我实现了双重序列化,它正在\u0022中添加。是否有方法使其正确工作,以便在序列化请求类时不添加表示“的\u0022类型?” 小提琴代码 public class Program { public static void Main() { Request request= new Request(); Contract contrac

尝试将序列化字符串添加到另一个类字符串类型,则该类需要序列化,但由于我实现了双重序列化,它正在\u0022中添加。是否有方法使其正确工作,以便在序列化请求类时不添加表示“的\u0022类型?”

小提琴代码

    public class Program
    {
        public static void Main()
        {
            Request request= new Request();
            Contract contract = new Contract();
            contract.number= "12345";
            var contractSerialized = JsonSerializer.Serialize(contract);
            Console.WriteLine(contractSerialized);

            request.dataObject= contractSerialized;
            var payload= JsonSerializer.Serialize(request);
            Console.WriteLine( payload );
        }
    }

    public class Request
    {
        public string dataObject { get; set; }
    }

    public class Contract
    {
        public string number { get; set; }
    }
电流输出

   {"number":"12345"}
   {"dataObject":"{\u0022number\u0022:\u002212345\u0022}"}
所需输出

   {"number":"12345"}
   {"dataObject":"{\"number\":\"12345\"}"}

您正在寻找一个不同的编码器,如果更改库不是一个选项,那么请使用
unasseredjsonescaping

var options = new JsonSerializerOptions
{
     Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};
var payload= JsonSerializer.Serialize(request, options);

谨防此方法无法脱除HTML和其他特殊字符,因此应考虑避免潜在的XSS漏洞。

< P>因为这些字符是ASCII,需要从响应中解码或跳过这些模式。使用下面的代码对字符

进行解码。
static string DecodeEncodedNonAsciiCharacters(string value)
        {
            return Regex.Replace(
                value,
                @"\\u(?<Value>[a-zA-Z0-9]{4})",
                m =>
                {
                    return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
                });
        }
static string decodeCodeDNOnAsciicharacters(字符串值)
{
返回正则表达式。替换(
价值
@“\\u(?[a-zA-Z0-9]{4}”,
m=>
{
return((char)int.Parse(m.Groups[“Value”].Value,NumberStyles.HexNumber)).ToString();
});
}

尝试使用Newtonsoft.Json而不是JsonSerializerYep,即{“dataObject”:“{\“number\”:\“12345\”}。非常感谢!为什么需要该输出?两者的处理方式应该相同。