基于正则表达式拆分JSON键以存储在多个变量中

本文关键字:变量 存储 正则表达式 拆分 JSON | 更新日期: 2023-09-27 18:04:46

{"key":"abc/1"}

我想将值存储在两个而不是一个字段中。我可以做以下事情。

[JsonProperty(PropertyName = "key", Required = Required.Always)]
public string Value { get; set; }

但是,我想有两个字段,但使用JsonProperty将它们序列化和反序列化为组合字符串。例如,如果我定义以下字段:

public string ValueScope { get; set; }
public int ValueId { get; set; }

我想使用JsonProperty或任何其他标签来填充字段,同时反序列化。是否有可能这样做,即填充ValueScope为"abc"和ValueId为1 ?

基于正则表达式拆分JSON键以存储在多个变量中

是的,您实际上可以实现两个属性的getset来操作底层的JsonProperty

这里有一个简单的例子,告诉你如何去做(警告:我只是在记事本上写出来的,所以请原谅任何打字错误)。

public string ValueScope
{
    get
    {
        var values = (this.Value ?? "").Split('/');
        if (values.Length == 2)
            return values[0];
        else
            return null;
    }
    set
    {
        this.Value = (value ?? "") + "/" + this.ValueId.ToString();
    }
}
public int ValueId
{
    get
    {
        int currentValue;
        var values = (this.Value ?? "").Split('/');
        if (values.Length == 2 && int.TryParse(values[1], out currentValue))
            return currentValue;
        else
            return default(int);
    }
    set
    {
        this.Value = (this.ValueScope ?? "") + "/" + value.ToString();
    }
}