Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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对象中序列化JSON对象_C#_Javascript_Json - Fatal编程技术网

C#在JSON对象中序列化JSON对象

C#在JSON对象中序列化JSON对象,c#,javascript,json,C#,Javascript,Json,我有以下实体: public class Product { public string Code {get;set;} public string Name {get;set;} public ICollection<Pack> Packs {get;set;} } public class Pack { public string Colour {get;set;} public string Moq {get;set;} } 注意命

我有以下实体:

public class Product
{
    public string Code {get;set;}
    public string Name {get;set;}

    public ICollection<Pack> Packs {get;set;}
}

public class Pack
{
    public string Colour {get;set;}
    public string Moq {get;set;}
}
注意命名差异,即颜色的大小写和美式拼写。
JavaScriptConvert.DeserializeObject()
会正确地反序列化它吗

还是我必须用另一种方式


如果我可以有一个对象,我可以直接访问这些名称和值,这将是伟大的

如果改用
DataContractJsonSerializer
,则可以将属性放在属性中,在生成/解析的JSON中为属性指定不同的名称:

[DataContract]
public class Pack
{
    [DataMember(Name = "color")]
    public string Colour {get;set;}

    [DataMember(Name = "moq")]
    public string Moq {get;set;}
}

如果改用
DataContractJsonSerializer
,则可以将属性放入属性中,在生成/解析的JSON中为属性指定不同的名称:

[DataContract]
public class Pack
{
    [DataMember(Name = "color")]
    public string Colour {get;set;}

    [DataMember(Name = "moq")]
    public string Moq {get;set;}
}
如果使用类似,则可以使用属性来控制序列化,例如:

public class Pack
{
    [JsonProperty("color")]
    public string Colour {get;set;}
    [JsonProperty("moq")]
    public string Moq {get;set;}
}
另外,考虑到您的预期输出,
产品
类应该如下所示:

public class Product
{
    [JsonProperty("code")]
    public long Code {get;set;}
    [JsonProperty("name")]
    public string Name {get;set;}
    [JsonProperty("packs")]
    public Pack[] Packs {get;set;}
}
注意代码和包类型。

如果使用类似的内容,则可以使用属性来控制序列化,例如:

public class Pack
{
    [JsonProperty("color")]
    public string Colour {get;set;}
    [JsonProperty("moq")]
    public string Moq {get;set;}
}
另外,考虑到您的预期输出,
产品
类应该如下所示:

public class Product
{
    [JsonProperty("code")]
    public long Code {get;set;}
    [JsonProperty("name")]
    public string Name {get;set;}
    [JsonProperty("packs")]
    public Pack[] Packs {get;set;}
}

注意代码和包类型。

在jsonPacks中是一个数组,但在产品类中它是一个单独的项目,我认为这将是一个问题更改它@omribitan在json中是一个数组,但在产品类中它是一个单独的项目,我认为这将是一个问题改变它@omribitan这似乎真的很好,只是意味着我不能改变我的模式太多;)问:如果我真的只想从json对象中提取ID和另一个字段,该怎么办?json对象用于生成一个表,所以我需要所有这些信息,但是我不能费心编写解析来将数据转换为更简单的形式,我应该费心,这会使它更容易,还是你可以让serialiser只查看某些内容?不用担心,我已经实现了一个javascript函数,只提取了我需要的信息,然后我创建了匹配相同的c#对象,然后得到Newton
JsonConvert.DeserialiseObject()
,将其转换为treat:),这看起来非常好,只是意味着我不能太多地更改我的模型;)问:如果我真的只想从json对象中提取ID和另一个字段,该怎么办?json对象用于生成一个表,所以我需要所有这些信息,但是我不能费心编写解析来将数据转换为更简单的形式,我应该费心,这会使它更容易,还是你可以让serialiser只查看某些内容?不用担心,我已经实现了一个javascript函数,只提取我需要的信息,然后我创建了匹配相同的c#对象,然后得到Newton
JsonConvert.DeserialiseObject()
来转换它,处理:)