我为特定类型创建了一个自定义JsonConverter。
public class FooNewtonsoftConverter : JsonConverter<Foo>{
public override void WriteJson(JsonWriter writer, Foo value, JsonSerializer serializer)
{
writer.WriteStartObject();
// Should it be serialized as "Id" or "id"?
writer.WritePropertyName("id");
writer.WriteValue(value.Id);
writer.WriteEndObject();
}
}
可以自定义JsonSerializer以使用其他命名策略,例如CamelCasePropertyNamesContractResolver
或将NamingStrategy
更改为CamelCaseNamingStrategy
。
您也可以用JsonProperty
装饰属性以更改名称。
如何为正在序列化的属性解析正确的属性名称?
参考方案
如果您查看内置的KeyValuePairConverter
,您会发现它们使用了
var resolver = serializer.ContractResolver as DefaultContractResolver;
writer.WritePropertyName((resolver != null) ? resolver.GetResolvedPropertyName(KeyName) : KeyName);
在您的方案中,它看起来像这样:
public class FooNewtonsoftConverter : JsonConverter<Foo>{
public override void WriteJson(JsonWriter writer, Foo value, JsonSerializer serializer)
{
writer.WriteStartObject();
var resolver = serializer.ContractResolver as DefaultContractResolver;
writer.WritePropertyName(resolver?.GetResolvedPropertyName("Id") ?? "Id");
writer.WriteValue(value.Id);
writer.WriteEndObject();
}
}
JSON.NET如何删除节点 - c#我有一个像下面这样的json:{ "d": { "results": [ { "__metadata": { }, "prop1": "value1", "prop2": "value2", "__some…
JSON PATH字段NULL检查表达式 - java我有一个像bellow的json数组:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sa…
json_encode网址失败 - php有人在this bug附近吗?echo json_encode(array('url'=>'/foo/bar')); {"url":"\/foo\/bar"} 我使用Zend_Json and Zend_Json_Expr以便我甚至可以在js对象中获取回调函数-但我无法获得…
json.dumps弄乱顺序 - python我正在使用json module创建一个包含类似条目的json文件json.dumps({"fields": { "name": "%s", "city": "%s", "status": "%s", "cou…
如何从JSON文件反序列化.NET Core中封装的对象表? - c#我想从外部API检索足球联赛的集合。来自服务器的响应如下所示:{ "api": { "results": 1496, "leagues": [ { "league_id": 1, ..... 返回的对象由“ api”字段组成,其中包含“结果”和“联盟”。我想反序列化代码并将其映射…