mik*_*net 8 .net c# json camelcasing json.net
我刚刚将我们的Json.NET从版本3.5发行版7升级到4.0版本8,并意识到没有以相同的方式完成seralization.序列化包含标准Dictionary的对象时,3.5版本保持字典键不变,但使用4.0时,合同解析器也适用于键.
例如,使用以下JsonSerializerSettings时:
jsonSerializerSettings = new JsonSerializerSettings
{
Converters = new List<JsonConverter> { new JavaScriptDateTimeConverter() },
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
Run Code Online (Sandbox Code Playgroud)
并在序列化像这样的对象时:
[JsonObject(MemberSerialization.OptOut)]
public class ProductFilter
{
public int Id { get; set; }
public int NodeId { get; set; }
public IDictionary<string, ProductFilterAttribute> Attributes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Attributes字典中的键也变成了camelCase.在版本3.5R7中保持不变的那些我觉得这是正确的方法.
3.5R7输出的示例片段:
{
"id": 98659,
"nodeId": 317970,
"attributes": {
"FULL_TIME_USE": {
values: [ { "1" } ],
formattedValue: "...
Run Code Online (Sandbox Code Playgroud)
4.0R8输出的示例代码段:
{
"id": 98659,
"nodeId": 317970,
"attributes": {
"fULL_TIME_USE": {
values: [ { "1" } ],
formattedValue: "...
Run Code Online (Sandbox Code Playgroud)
(我们有很多类似的代码,所以去除驼峰解决和增加[JsonProperty("id")],[JsonProperty("nodeId")]等这里是不是一个真正的选择)
有关如何解决这个问题的任何想法?
| 归档时间: |
|
| 查看次数: |
3891 次 |
| 最近记录: |