通过JSON发送复杂对象,然后在另一台PC上重建它

时间:2014-02-18 10:45:54

标签: c# json

我可以使用JSON将复杂对象从一台PC发送到另一台吗?

根据我对JSON的理解,您可以将该对象串起来,然后将该字符串发送到另一台PC,然后对其进行解串并再次重建该对象。

但是现在怎么知道我发送了什么对象?因为我可以发送它对象A或对象B?

有没有办法找出我发送的对象?或者是JSON的一部分,知道你将收到什么类型的对象?

4 个答案:

答案 0 :(得分:1)

  

我可以使用JSON将复杂对象从一台PC发送到另一台吗?

  

但是现在怎么知道我发送了什么对象?因为我可以   发送对象A或对象B?

接收方知道何时对Json进行反序列化。接收器需要知道Json会是什么样子,或者如果它不知道就动态地反序列化它。有关动态反序列化的信息,请参阅this SO answer

dynamic something = JsonConvert.DeserializeObject(json);

答案 1 :(得分:0)

如果作为客户端使用像Spring RestTemplate这样的类的实例,您可以告诉它应该期望JSon成为其实例的哪个类,并相应地转换它。

http://www.springframework.net/rest/doc-latest/reference/html/resttemplate.html

答案 2 :(得分:0)

  

但是现在怎么知道我发送了什么对象?因为我可以   发送对象A或对象B?

另一方 应该知道 JSON 对象是以字符串格式收到的,因此要解析或正确地反序列化,就像在下面的例子中一样,它接受一个JSON字符串,解析它到JSON或C#对象:

在JavaScript中:

var jsonObj = JSON.parse(yourJsonString);

在C#中:

dynamic jsonObj = JsonConvert.DeserializeObject(yourJsonString);

此外,如果是HTTP请求,您可以将内容类型指定为:application/json。 这样,接收方可以分析它并理解它是一个JSON字符串。

了解详情:

答案 3 :(得分:0)

JSON 数据的字符串表示形式。

您要么知道对方期望还是需要发送其他元数据。

通常,您确切地知道发送了什么类型的对象。

添加额外的元数据可以很容易地自动完成(我相信有很多库可用):

{
  class: A
  entity: {...}
}