小编mik*_*net的帖子

CamelCase打破了Json.NET版本4的变化

我刚刚将我们的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": …
Run Code Online (Sandbox Code Playgroud)

.net c# json camelcasing json.net

8
推荐指数
1
解决办法
3891
查看次数

标签 统计

.net ×1

c# ×1

camelcasing ×1

json ×1

json.net ×1