gpt4 book ai didi

c# - 对象中的特殊字符使 JSON 无效(DataContractJsonSerializer)

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:53 25 4
gpt4 key购买 nike

我正在尝试序列化一个对象,该对象在他的一个字符串中有一个特殊字符(如 ø 或 æ)。

问题是当我使用这样的特殊字符时,我的 JSON 的最后一位被截断了吗?

没有特殊字符:

{"availability":"busy","name":"test","visibility":"public"}

特殊字符:

{"availability":"busy","name":"tøst","visibility":"public"

我注意到对于每个特殊字符,我的 JSON 字符串中都会截掉一个字符。

我使用下面的代码来序列化:

// create new appointment
AppointmentClass appoint = new AppointmentClass();
appoint.name = subjectstring;
appoint.availability = "busy";
appoint.visibility = "public";

// generate json string from Appointment class
MemoryStream stream = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(AppointmentClass));
ser.WriteObject(stream, appoint);
stream.Position = 0;
StreamReader sr = new StreamReader(stream);
string payload = sr.ReadToEnd();

最佳答案

您需要使用 UTF-8 编码。会是这样的

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(AppointmentClass));
var ms = new MemoryStream();
serializer.WriteObject(ms, appoint);
//use utf encoding to accept special chars
var mytext = Encoding.UTF8.GetString(ms.ToArray());

更多信息 here

关于c# - 对象中的特殊字符使 JSON 无效(DataContractJsonSerializer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412442/

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