Json转换空字符串而不是null

伊戈尔·梅萨罗斯(Igor Meszaros)

我正在尝试序列化我的结构,以便未获得值的字符串获得其默认值“”而不是null

[JsonProperty(PropertyName = "myProperty", DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue("")]
public string MyProperty{ get; set; }

我在Json字符串中的结果:

"myProperty": null,

我想要的是

"myProperty": "",

我也尝试创建一个没有任何影响的转换器,由于某些原因,甚至不能触发Convert和WriteJson函数:

[JsonProperty(PropertyName = "myProperty")]
[JsonConverter(typeof(NullToEmptyStringConverter))]
public string MyProperty{ get; set; }

class NullToEmptyStringConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(object[]);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        if (value == null)
            writer.WriteValue("");
    }
}

这没有帮助Json.Net如何将null反序列化为空字符串?

这应该工作:

var settings = new JsonSerializerSettings() { ContractResolver= new NullToEmptyStringResolver() };
var str = JsonConvert.SerializeObject(yourObj, settings);

public class NullToEmptyStringResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        return type.GetProperties()
                .Select(p=>{
                    var jp = base.CreateProperty(p, memberSerialization);
                    jp.ValueProvider = new NullToEmptyStringValueProvider(p);
                    return jp;
                }).ToList();
    }
}

public class NullToEmptyStringValueProvider : IValueProvider
{
    PropertyInfo _MemberInfo;
    public NullToEmptyStringValueProvider(PropertyInfo memberInfo)
    {
        _MemberInfo = memberInfo;
    }

    public object GetValue(object target)
    {
        object result =  _MemberInfo.GetValue(target);
        if (_MemberInfo.PropertyType == typeof(string) && result == null) result = "";
        return result;

    }

    public void SetValue(object target, object value)
    {
        _MemberInfo.SetValue(target, value);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回空字符串而不是 Null

来自分类Dev

Python json.dumps将空字符串转换为null

来自分类Dev

Web API不将JSON空字符串值转换为null

来自分类Dev

Jersey POJOMappingFeature将null转换为空字符串?

来自分类Dev

无法将空字符串转换为JSON对象

来自分类Dev

将json转换为xml并删除空字符串

来自分类Dev

我可以将空的TextInput值作为空字符串发送到DataProvider而不是转换为null吗?

来自分类Dev

将空字符串转换为“”

来自分类Dev

将空字符串转换为“”

来自分类Dev

Oracle空字符串/ NULL

来自分类Dev

Java空字符串等于NULL

来自分类Dev

Java空字符串等于NULL

来自分类Dev

为什么这个假值会转换为空字符串而不是 0?

来自分类Dev

Rails活动模型序列化器,如何返回空字符串而不是null

来自分类Dev

在Spring MVC中将表单值设置为NULL而不是空字符串

来自分类Dev

Rails活动模型序列化器,如何返回空字符串而不是null

来自分类Dev

COM服务器发送空字符串,该字符串将转换为NULL指针

来自分类Dev

快速观察表明等于空字符串的对象不是空字符串

来自分类Dev

快速观察表明等于空字符串的对象不是空字符串

来自分类常见问题

将嵌套的null值转换为数据帧内部的空字符串spark

来自分类Dev

如何将Talend中所有列的空字符串转换为null

来自分类Dev

PySpark将空字符串转换为null并用Parquet编写

来自分类Dev

在asp.net核心中,空字符串是否转换为NULL?

来自分类Dev

遍历所有公共变量并将NULL值转换为空字符串

来自分类Dev

为什么JavaScript有时会将null转换为空字符串,有时又将其转换为“ null”字符串?

来自分类Dev

将字符串转换为数字,将空字符串或空字符串解释为0

来自分类Dev

XSD属性(不是元素)不应为空字符串

来自分类Dev

空字符串,而不是不匹配的组错误

来自分类Dev

检查外壳中的非空字符串(而不是!-z)

Related 相关文章

  1. 1

    返回空字符串而不是 Null

  2. 2

    Python json.dumps将空字符串转换为null

  3. 3

    Web API不将JSON空字符串值转换为null

  4. 4

    Jersey POJOMappingFeature将null转换为空字符串?

  5. 5

    无法将空字符串转换为JSON对象

  6. 6

    将json转换为xml并删除空字符串

  7. 7

    我可以将空的TextInput值作为空字符串发送到DataProvider而不是转换为null吗?

  8. 8

    将空字符串转换为“”

  9. 9

    将空字符串转换为“”

  10. 10

    Oracle空字符串/ NULL

  11. 11

    Java空字符串等于NULL

  12. 12

    Java空字符串等于NULL

  13. 13

    为什么这个假值会转换为空字符串而不是 0?

  14. 14

    Rails活动模型序列化器,如何返回空字符串而不是null

  15. 15

    在Spring MVC中将表单值设置为NULL而不是空字符串

  16. 16

    Rails活动模型序列化器,如何返回空字符串而不是null

  17. 17

    COM服务器发送空字符串,该字符串将转换为NULL指针

  18. 18

    快速观察表明等于空字符串的对象不是空字符串

  19. 19

    快速观察表明等于空字符串的对象不是空字符串

  20. 20

    将嵌套的null值转换为数据帧内部的空字符串spark

  21. 21

    如何将Talend中所有列的空字符串转换为null

  22. 22

    PySpark将空字符串转换为null并用Parquet编写

  23. 23

    在asp.net核心中,空字符串是否转换为NULL?

  24. 24

    遍历所有公共变量并将NULL值转换为空字符串

  25. 25

    为什么JavaScript有时会将null转换为空字符串,有时又将其转换为“ null”字符串?

  26. 26

    将字符串转换为数字,将空字符串或空字符串解释为0

  27. 27

    XSD属性(不是元素)不应为空字符串

  28. 28

    空字符串,而不是不匹配的组错误

  29. 29

    检查外壳中的非空字符串(而不是!-z)

热门标签

归档