sau*_*sar 5 .net c# serialization json json.net
我有一个带有塞尔维亚字符的 json 数据!当我想获取这些数据时,我需要 JsonSeriaize 和数据转换,例如Željko Cvijeti?
To}\u0001eljko Cvijeti\u0007\u0001
你有什么想法来解决这个问题吗?
这里我有 Json 结果示例
"SMSFlowMessages": [
{
"Display": "Example",
"MessageId": 104,
"MessageText": "Dear }\u0001eljko Cvijeti\u0007\u0001, the 22-05-2018 it will be your Birthday!!\nIn this special day you will have double points on all products!\n\nExample Team"
},
{
"Display": "Example",
"MessageId": 105,
"MessageText": "Dear test test, the 22-05-2035 it will be your Birthday!!\nIn this special day you will have double points on all products!\n\nExample Team"
},
Run Code Online (Sandbox Code Playgroud)
这是我的 C# 代码
JsonSerializerSettings settings = new JsonSerializerSettings() { Culture = new CultureInfo("sr-Latn-CS") };
json = JsonConvert.SerializeObject(root, settings);
root.SMSFlowMessages.Clear();
root.ViberFlowMessages.Clear();
try
{
log.append("SMS SEND>>START:" + Environment.NewLine + json + Environment.NewLine + ">>END", logdir);
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(apiurl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var getresult = client.PostAsync(apiurl, stringContent).Result;
string resultContent = getresult.Content.ReadAsStringAsync().Result;
log.append("SMS RECV<<START:" + Environment.NewLine + resultContent + Environment.NewLine + "<<END", logdir);
smsflag = "";
json = "";
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*age 10
JSON 支持 Unicode,JSON 在 HTTP API 中使用时通常会编码为 UTF-8。但是,如果在序列化为 JSON 时需要转义非 ASCII 字符,则可以使用以下JsonSerializerSettings.StringEscapeHandling
属性指定:
var text = "Željko Cvijeti?";
var jsonSerializerSettings = new JsonSerializerSettings {
StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
};
var json = JsonConvert.SerializeObject(text, jsonSerializerSettings);
Run Code Online (Sandbox Code Playgroud)
这导致此 JSON:
"\u017deljko Cvijeti\u0107"
Run Code Online (Sandbox Code Playgroud)
这与您在问题中显示的不同,但说实话,我不知道 Ž 如何映射到"}\u0001"
. 请参阅Unicode 转义序列以了解如何转义 JavaScript 字符串文字中的字符。
小智 10
虽然这个线程现在已经很老了,但我会尝试帮助一些在我之后偶然发现这个线程的人。我真的不明白这个线程的主要问题或意图,但我认为 saulyasar 错误地表达了他的问题。我将他的问题解释为:如何序列化我的字符串“Željko Cvijeti?” 转换为 JSON,而不会将字符转换为“}\u0001”之类的内容。
答案很简单:
var output = JsonSerializer.Serialize("Željko Cvijeti?", new JsonSerializerOptions
{
WriteIndented = true,
Encoder = JavaScriptEncoder.Default
});
-> output: "\"\\u017Deljko Cvijeti\\u0107\""
Run Code Online (Sandbox Code Playgroud)
将字符串转换为 JSON 但转换特殊字符,而
var output = JsonSerializer.Serialize("Željko Cvijeti?", new JsonSerializerOptions
{
WriteIndented = true,
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
});
-> output: "\"Željko Cvijeti?\""
Run Code Online (Sandbox Code Playgroud)
通过使用 UnsafeRelaxedJsonEscaping Encoder 解决了这个问题。
归档时间: |
|
查看次数: |
9068 次 |
最近记录: |