将对象转换为JSON,包括方法调用的值

时间:2018-02-26 14:35:42

标签: c# json json.net

我有来自C#第三方库的复杂对象。

为了解释的目的,我的复杂对象看起来像这样:

myobject.Property1
myobject.Property2
myobject.Property3.SubPropertyA
myobject.Property3.SomeMethodX()

是否可以将Json.Net配置为在myobject的序列化中包含方法的名称及其返回值?

我想要实现这样的JSON:

{
 "Property1" : "valueOfProperty1" ,
 "Property2" : "valueOfProperty2" ,
 "Property3" : {
                  "SubPropertyA" : "valueOfSubPropertyA",
                  "SomeMethodX" : {JSON serialization of SomeMethodX's return value}
               }
}

我正在考虑使用Reflection通过覆盖SomeMethodX

CreateProperty方法来调用DefaultContractResolver
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
    JsonProperty property = base.CreateProperty(member, memberSerialization);

    MethodInfo getServiceMethod = property.DeclaringType.GetMethod("MethodX");
    MethodInfo genericGetServiceMethod = getServiceMethod.MakeGenericMethod(new Type[] { typeof(SomeMethodXReturnType) });//SomeMethodX is generic

    // To invoke the method I need a reference to the actual object, I don't know if it can be accessed through the available arguments????
    object returnValue = genericGetServiceMethod.Invoke(targetedObject, null);

    //next I guess I have to add the return value as an extra property for further serialization
    //I don't know how

    return property;
}

我再次提到我正在尝试从库中序列化一个对象,并且 不是一些自定义对象。

由于我缺乏Json.Net的经验,我不知道自己是否走在正确的轨道上。

0 个答案:

没有答案