Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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中序列化类#_C#_Json_Class_Serialization - Fatal编程技术网

C# 在c中序列化类#

C# 在c中序列化类#,c#,json,class,serialization,C#,Json,Class,Serialization,我希望有人能帮我解决将数据序列化到类中的问题,好吗 我需要将以下json字符串发送到Web服务: “{”到达“:”2012-12-24T20:00:00.0000000 Z“,”皮卡“:{”街道名“:”阿马列加德“,”门牌号“:”36“,”zipCode“,”1256“,”城市“,”哥本哈根K“,”国家“,”DK“,”lat“:”55.68,“lng“,”12.59}”,下车“{”街道名“:”阿马列加德“,”门牌号“,”36“,”zipCode“,”1256“,”城市“,”哥本哈根K“,”国家“

我希望有人能帮我解决将数据序列化到类中的问题,好吗

我需要将以下json字符串发送到Web服务:

“{”到达“:”2012-12-24T20:00:00.0000000 Z“,”皮卡“:{”街道名“:”阿马列加德“,”门牌号“:”36“,”zipCode“,”1256“,”城市“,”哥本哈根K“,”国家“,”DK“,”lat“:”55.68,“lng“,”12.59}”,下车“{”街道名“:”阿马列加德“,”门牌号“,”36“,”zipCode“,”1256“,”城市“,”哥本哈根K“,”国家“,”DK“,”lat“,”55.68“,”lng“,”12.59}”,车辆类型“:”“fourSeaterAny”,“评论”:“你好”}”

我将这个json字符串放入,它生成了以下类:

public class Pickup
{
public string streetName { get; set; }
public string houseNumber { get; set; }
public string zipCode { get; set; }
public string city { get; set; }
public string country { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}

public class Dropoff
{
public string streetName { get; set; }
public string houseNumber { get; set; }
public string zipCode { get; set; }
public string city { get; set; }
public string country { get; set; }
public double lat { get; set; }
public double lng { get; set; }
}

public class RootObject
{
public string arrivalAt { get; set; }
public Pickup pickup { get; set; }
public Dropoff dropoff { get; set; }
public string vehicleType { get; set; }
public string comments { get; set; }
}
我以前试过这样做,但从来没有遇到过这样的情况:一个类中有一个类,可以说。意思是“上一个”和“下一个”设置

当我想在这条线上做些什么时,我被卡住了

Booking bookingdetails = new ClickATaxi_Classes.Booking(THIS IS WHERE I WILL PUT THE 17 BITS OF INFORMATION BUT HOW?);
我觉得我需要对这个类做一些事情,让它接受参数,但我不知道从哪里开始,以及如何发送取货信息

有人能帮忙吗


谢谢。您需要一个JSON序列化程序。只需选择一个您喜欢的。列出的3个都很好。请确保阅读以更好地理解为什么需要JSON序列化程序。

首先,您应该稍微重构生成的代码

public class Location
{
     public string streetName { get; set; }
     public string houseNumber { get; set; }
     public string zipCode { get; set; }
     public string city { get; set; }
     public string country { get; set; }
     public double lat { get; set; }
     public double lng { get; set; }
}

public class Booking
{
     public string arrivalAt { get; set; }
     public Location pickup { get; set; }
     public Location dropoff { get; set; }
     public string vehicleType { get; set; }
     public string comments { get; set; }
}
不需要两个表示相同内容的类。之后,您只需实例化booking对象

Booking obj = new Booking { arrivalAt = "ARRIVAL", pickup = new Location { streetName = "", houseNumber = "" ... }, dropoff = new Location { streetName = "", houseNumber = "" ...}, vehicleType = "", comments = "" }
接下来,您将序列化为字符串,我喜欢,但您可以使用任何序列化程序。
如果要使用JSON.NET,可以通过安装来安装它,然后将using语句添加到将序列化对象的类的顶部: 使用Newtonsoft.Json

最后,只需调用JsonConvert

string json = JsonConvert.SerializeObject(product);
以下是指向其他序列化程序的一些链接:


如果您的所有类都可以ISerializable,那么序列化应该可以为包含的对象正常工作。您的意思是手动创建对象:Booking bookingdetails=new ClickATaxi_classes.Booking{arrivalAt=“Something”,pickup=new ClickATaxi_classes.pickup{streetName=“Something”};@emartel不需要
ISerializable
。为什么要创建两个属性完全相同的类?添加某种枚举来区分衰减和拾取,并将它们存储在一种类型中,不是更好的解决方案吗?