我可以使用JSON将复杂对象从一台PC发送到另一台吗?
根据我对JSON的理解,您可以将该对象串起来,然后将该字符串发送到另一台PC,然后对其进行解串并再次重建该对象。
但是现在怎么知道我发送了什么对象?因为我可以发送它对象A或对象B?
有没有办法找出我发送的对象?或者是JSON的一部分,知道你将收到什么类型的对象?
答案 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: {...}
}