Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 使用自定义映射C进行自定义JSON序列化#_C#_.net - Fatal编程技术网

C# 使用自定义映射C进行自定义JSON序列化#

C# 使用自定义映射C进行自定义JSON序列化#,c#,.net,C#,.net,我想序列化/反序列化以下JSON: { "result": { "ID": 1, "TITLE": "Example", "ARRAY": [ { "Item1": "Result1", "Item2": "Result2" } ] } } 我尝试了下面的类格式,但还没有成功。。。有人能帮我反序列化吗 p

我想序列化/反序列化以下JSON:

{
    "result": {
        "ID": 1,
        "TITLE": "Example",
        "ARRAY": [
            {
                "Item1": "Result1",
                "Item2": "Result2"
            }
        ]
    }
}
我尝试了下面的类格式,但还没有成功。。。有人能帮我反序列化吗

public class myClass
{
    public string ID { get; set; }

    [JsonProperty("TITLE")]
    public string Name { get; set; }
}

obs.:在上面的示例类定义中,使用名称空间
Newtonsoft.JSON
,您已经调用了类
myClass
,但是您必须调用它
result
,因为
ID
TITLE
是给定示例中
result
JSON的成员
myClass
无法解析任何内容

我不知道您为什么想要一个名为
Name
的属性,该属性映射到
TITLE
,但是好的,如果您想这样做,可以在解决方案运行后修改它

不过,我们还没有完成。您还有一个名为
ARRAY
的JSON成员,需要为此定义一个单独的类

还有另外一个问题:
result
JSON嵌套在隐式基本对象中,因此我们也需要定义它。让我们称之为
BaseResult

public class ARRAY
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
}

public class Result
{
    public int ID { get; set; }
    public string TITLE { get; set; }
    public List<ARRAY> ARRAY { get; set; }
}

public class BaseResult
{
    public Result result { get; set; }
}
公共类数组
{
公共字符串Item1{get;set;}
公共字符串Item2{get;set;}
}
公开课成绩
{
公共int ID{get;set;}
公共字符串标题{get;set;}
公共列表数组{get;set;}
}
公共类基结果
{
公共结果结果{get;set;}
}

如果您使用的是Visual Studio,则可以使用
Edit>paste Special>paste JSON as class
将JSON复制并粘贴到任何*.cs文件中。它将生成表示JSON的POCO对象,在您的情况下是:

public class Rootobject
{
    public Result result { get; set; }
}

public class Result
{
    public int ID { get; set; }
    public string TITLE { get; set; }
    public ARRAY[] ARRAY { get; set; }
}

public class ARRAY
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
}
然后,假设JSON位于名为
data
的字符串变量中,则可以按如下方式反序列化它:

var result= JsonConvert.DeserializeObject<Rootobject>(data);
var result=JsonConvert.DeserializeObject(数据);
您可以直接前往并粘贴json,它将为您生成类。