Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用自定义数据类型转换JSON.NET类_C#_Json_Json.net - Fatal编程技术网

C# 使用自定义数据类型转换JSON.NET类

C# 使用自定义数据类型转换JSON.NET类,c#,json,json.net,C#,Json,Json.net,我正在使用JSON.NET尝试将一种类型的Bar转换为JSON public class Foo { String A; String B; Int32 C; DateTime D; } public class Bar { String E; String F; String G; Foo H; } public String ConvertBar(Bar _bar) { String Result = JsonCon

我正在使用JSON.NET尝试将一种类型的Bar转换为JSON

public class Foo {
    String A;
    String B;
    Int32 C;
    DateTime D;
}

public class Bar {
    String E;
    String F;
    String G;
    Foo H;
}
public String ConvertBar(Bar _bar) {
    String Result = JsonConvert.SerializeObject<Bar>(_bar);
    return Result;
}
我用它把一个条转换成JSON

public class Foo {
    String A;
    String B;
    Int32 C;
    DateTime D;
}

public class Bar {
    String E;
    String F;
    String G;
    Foo H;
}
public String ConvertBar(Bar _bar) {
    String Result = JsonConvert.SerializeObject<Bar>(_bar);
    return Result;
}

无论我做什么,
ConvertBar()
的输出总是空的。那么,在保留
Foo
的值的同时,如何将Bar转换为JSON呢?我听说您必须创建一个转换器,但我在这方面没有经验。

您可以将字段转换为属性,也可以将字段装饰为[JsonProperty]

 public class Foo
    {
        [JsonProperty]
        String A;
        [JsonProperty]
        String B;
        [JsonProperty]
        Int32 C;
        [JsonProperty]
        DateTime D;
    }

    public class Bar
    {
        public Bar()
        {
            H = new Foo();
        }
        [JsonProperty]
        String G;
        [JsonProperty]
        Foo H;
        public String E { get; set; }
        public String F { get; set; }
    }
使用ConvertBar函数后,我得到以下输出

{"G":null,"H":{"A":null,"B":null,"C":0,"D":"0001-01-01T00:00:00"},"E":null,"F":null}

您应该公开您的属性,并且在两个类中都有一个无参数构造函数,这两个类都不是真正完整的类。它们只是我代码中实际类所包含内容的基本部分。我已经有了公共的属性,并且我已经有了合适的构造函数。我真的很难转换它。现在我看到,在序列化bar对象的任何地方,都是序列化
MessageJSON
propertyhoops。我忘了把它删掉。这是我实际代码的一个片段。我只是复制了它,以便更快。现在修好了。