Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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字符串反序列化到域对象?_C#_Json_Windows Phone 7 - Fatal编程技术网

C# 如何将json字符串反序列化到域对象?

C# 如何将json字符串反序列化到域对象?,c#,json,windows-phone-7,C#,Json,Windows Phone 7,我正在尝试将以下json转换为域对象 JSON: [{"name":"McDonalds","deals":[{"desc":"Onion Rings free with Double Cheese burgers"}],"geometry":{"lat":13.073412,"lng":80.221393}},{"name":"JusSportz","deals":[{"desc":"20% off on Wilson Rackets"}],"geometry":{"lat":13.07323

我正在尝试将以下json转换为域对象

JSON:

[{"name":"McDonalds","deals":[{"desc":"Onion Rings free with Double Cheese burgers"}],"geometry":{"lat":13.073412,"lng":80.221393}},{"name":"JusSportz","deals":[{"desc":"20% off on Wilson Rackets"}],"geometry":{"lat":13.073231,"lng":80.221181}}]
    [DataContract]
    public class Deal
    {
        [DataMember(Name="name")]
        public string Store { get; set; }

        [DataMember(Name="deals")]
        public Offer[] Offers {get; set;}

        [DataMember(Name="geometry")]
        public GeoCoordinate Location { get; set; }

    }

    [DataContract]
    public class Offer
    {
        [DataMember]
        public string deal;
    }
型号:

[{"name":"McDonalds","deals":[{"desc":"Onion Rings free with Double Cheese burgers"}],"geometry":{"lat":13.073412,"lng":80.221393}},{"name":"JusSportz","deals":[{"desc":"20% off on Wilson Rackets"}],"geometry":{"lat":13.073231,"lng":80.221181}}]
    [DataContract]
    public class Deal
    {
        [DataMember(Name="name")]
        public string Store { get; set; }

        [DataMember(Name="deals")]
        public Offer[] Offers {get; set;}

        [DataMember(Name="geometry")]
        public GeoCoordinate Location { get; set; }

    }

    [DataContract]
    public class Offer
    {
        [DataMember]
        public string deal;
    }

我尝试了System.Runtime.Serialization.Json命名空间中的DataContractJsonSerializer,但显然无法将字符串转换为对象。有没有其他的图书馆可以让我完成这项工作?或者有没有一种方法可以使用这个库(通过将Json字符串转换成某种中间格式)来完成这项工作

尝试更改位模型:

[DataContract]
public class Deal
{
    [DataMember(Name="name")]
    public string Store { get; set; }

    [DataMember(Name="deals")]
    public Offer[] Offers {get; set;}

    [DataMember(Name="geometry")]
    public GeoCoordinate Location { get; set; }

}

[DataContract]
public class Offer
{
    [DataMember(Name="desc")]
    public string deal { get; set; }
}

下面是我如何将JSON反序列化回我的域对象

using (var reader = new MemoryStream(Encoding.Unicode.GetBytes("YourStringValue")))
{
     var ser = new DataContractJsonSerializer(typeof(Deal));
     return (Deal)ser.ReadObject(reader);
}

这就是你想要的吗?

我想是的,我还认为我可能正在转换一系列交易,同时(错误地)将其转换为交易。我得到一个无效的强制转换异常。我将尝试并接受它,如果它工作的话,请确保您正在反序列化的所有类都具有数据协定属性。如果没有,您可能会遇到额外的序列化问题。我认为这不是模型的问题。我认为这表明我正在转换/解析JSON。