从Newtonsoft.Json

时间:2019-03-20 18:02:37

标签: c# json.net

我有一个问题,我希望能够基于Newtonsoft.Json在json和我的c#对象模型之间映射的模型,将json路径转换为对象路径。

下面我有一些序列化为json的复杂类型的示例。鉴于我拥有子属性my_child.uppercase的json路径,我想将其转换为对象属性路径Child.Uppercase

是否可以查询Newtonsoft.Json在两个世界之间映射的模型?还是我必须使用反射从头开始构建它?

public class ParentModel
{
   // serialised into another name!
   [JsonProperty(PropertyName = "my_child")]
   public ChildModel Child {get; set;} 
}

//serialised into another case!
[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class ChildModel
{
   public string Uppercase {get; set;} 
}

void Main()
{
    var item = new ParentModel() {
        Child = new ChildModel() {
            Uppercase = "Joe"
        }
    };

    // outputs {"my_child":{"uppercase":"Joe"}}
    JsonConvert.SerializeObject(item).Dump();

    var expected = "Child.Uppercase";
    var actual = ConvertJsonPropertiesToObjectProperties("my_child.uppercase");

    Debug.Assert(expected == actual);
}

string ConvertJsonPropertiesToObjectProperties(string jsonPropertyNames){
    return "implement me!!";
}

0 个答案:

没有答案