[英]Force System.Text.Json to deserialize in CamelCase
我正在嘗試使用 System.Text.Json 從 PascalCase 字符串中使用 camelCase 約定構建 JsonElement(或類似)。 有沒有辦法強制執行這種行為?
var jsonString = "{\"Property1\":\"s\", \"PropertyCamel\":{\"PropertyNested\":\"g\"}, \"PPP\":[{\"NestedList\":\"1\"}]}";
var deserialized = System.Text.Json.JsonSerializer.Deserialize<JsonElement>(jsonString,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
});
var serialized = System.Text.Json.JsonSerializer.Serialize(
deserialized,
new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
});
// deserialized outputs property names in PascalCase
我也嘗試過反序列化-> 序列化-> 反序列化但沒有成功。
有沒有辦法這樣做?
參考這個答案,使用 Newtonsoft.Json
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System.Dynamic;
var jsonString = "{\"Property1\":\"s\", \"PropertyCamel\":{\"PropertyNested\":\"g\"}, \"PPP\":[{\"NestedList\":\"1\"}]}";
// won't work if I used json
// var json = JsonConvert.DeserializeObject(jsonString);
var interimObject = JsonConvert.DeserializeObject<ExpandoObject>(jsonString);
var jsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var myJsonOutput = JsonConvert.SerializeObject(interimObject, jsonSerializerSettings);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.