gpt4 book ai didi

c# - 具有双转义字符的序列化 JSON

转载 作者:行者123 更新时间:2023-11-30 17:45:16 28 4
gpt4 key购买 nike

当我尝试使用包含斜杠 / 的字符串属性序列化对象时,生成的 JSON 每个斜杠转义两次。


示例:

随机类:

public class Foo
{
[DataMember(Name = "bar"]
public string Bar { get; set; }
}

Foo foo = new Foo() { Bar = " Foo / Bar" };
string json = RandomStaticClass.Serialize(foo);

JSON 将是:

{ 
\"bar\":\"Foo \\/ Bar\"
}

结果是:

{ 
"bar":"Foo \/ Bar"
}

虽然,我只想:

{ 
"bar":"Foo / Bar"
}

有什么想法吗?谢谢:)


这是我序列化一个对象的函数:

public static string Serialize(object instance)
{
using (MemoryStream stream = new MemoryStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(instance.GetType());
serializer.WriteObject(stream, instance);
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}

最佳答案

您是否在 Visual Studio 中看到这样的 JSON?因为我相信这样就可以了,而实际值不会有转义字符。

LE:经过测试,你是对的。

我认为解决方法可能只是在字符串之后调用 Replace,如下所示:

        using (MemoryStream stream = new MemoryStream())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(instance.GetType());
serializer.WriteObject(stream, instance);
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd().Replace("\\", "");
}
}

如果有更好的选择,我想知道它是如何处理的。

我希望这能回答您的问题。

LLE(仅当您计划在客户端使用 JavaScript 时):

我必须添加一个事实,它是这样自动完成的(正斜杠没有转义)来处理结束标签 - /> (我引用 - “HTML 不允许标签内的字符串包含 </ ”),因为在客户端 '\/' === '/'在 JavaScript 中。所以你不必担心。

关于c# - 具有双转义字符的序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065112/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com