JSON.NET 将对象 序列化为 JSON字符串时,能否指定,某个属性不被转化。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON.NET 将对象 序列化为 JSON字符串时,能否指定,某个属性不被转化。相关的知识,希望对你有一定的参考价值。
比如,有Password这个属性,就不希望被转化出来。。
通常在需要序列化属性下标记即可:[JsonProperty(Name = "password")]
public string Password get; set;
你试试 不标记的情况下能否实现~追问
我看到网上的很多例子,并没有去特别的标记属性啊???
呵呵。自己解决了。
在不想出现的 字段前 加上 [JsonIgnore] 即可。呵呵。原来如此简单。。。哎。。。
默认是都序列化
在类的上面写上 [JsonObject(MemberSerialization.OptIn)] 标记
然后在其他需要序列化的属性上面写 [JsonProperty] 标记
Password不标记。
// opt-in指定成员序列化(默认opt-out全部序列化),要序列化的成员必须带有JsonProperty
嗯。。两种方法,我一会都试试。呵呵。。。
参考技术A get; set;Json.net 将数字属性序列化为字符串
【中文标题】Json.net 将数字属性序列化为字符串【英文标题】:Json.net serialize numeric properties as string 【发布时间】:2017-01-24 08:41:39 【问题描述】:我正在使用 JsonConvert.SerializeObject 序列化模型对象。 服务器期望所有字段都是字符串。我的模型对象具有数字属性和字符串属性。我无法向模型对象添加属性。有没有办法像字符串一样序列化所有属性值?我必须只支持序列化,不支持反序列化。
【问题讨论】:
***.com/questions/37475997/… @CodeJoy:对我来说,这似乎很专注于 DataTable - 我看不出这些答案将如何帮助 OP。 见Convert long number as string in the serialization。 对不起@CodeJoy,但我在想一些“更自动”的东西,比如 ContractResolver 或类似的东西。我不想手动将我的模型对象转换为所有属性都为字符串的 JObject。我将使用此解决方案作为最后的资源,因为它有效。无论如何谢谢你的帮助!! ;) @dbc 已经过测试,效果很好。完美!! 【参考方案1】:即使是数字类型,您也可以提供自己的JsonConverter
。我刚刚尝试过,它可以工作——它又快又脏,你几乎肯定想扩展它以支持其他数字类型(long
、float
、double
、decimal
等)但它应该得到你去:
using System;
using System.Globalization;
using Newtonsoft.Json;
public class Model
public int Count get; set;
public string Text get; set;
internal sealed class FormatNumbersAsTextConverter : JsonConverter
public override bool CanRead => false;
public override bool CanWrite => true;
public override bool CanConvert(Type type) => type == typeof(int);
public override void WriteJson(
JsonWriter writer, object value, JsonSerializer serializer)
int number = (int) value;
writer.WriteValue(number.ToString(CultureInfo.InvariantCulture));
public override object ReadJson(
JsonReader reader, Type type, object existingValue, JsonSerializer serializer)
throw new NotSupportedException();
class Program
static void Main(string[] args)
var model = new Model Count = 10, Text = "hello" ;
var settings = new JsonSerializerSettings
Converters = new FormatNumbersAsTextConverter()
;
Console.WriteLine(JsonConvert.SerializeObject(model, settings));
【讨论】:
以上是关于JSON.NET 将对象 序列化为 JSON字符串时,能否指定,某个属性不被转化。的主要内容,如果未能解决你的问题,请参考以下文章
使用 Json.net 将 JSON 对象反序列化为动态对象