过程:
我想使用JSON发送消息。这就是我的想法,对吗?
客户端到服务器(请求):
"data":
{
"type":"request"
}
服务器到客户端(响应):
"data":
{
"type":"light",
"state":true
}
例如客户处理响应:
Data data = JsonConvert.DeserializeObject<Data>(message);
switch(data.Type)
{
case "light":
this.Light = data.State;
break;
}
我处理一切的逻辑和方式合理吗?
这是我明智地使用json的方式吗?代替我只是发送诸如“您可以打开灯”之类的纯文本消息吗?
答案 0 :(得分:3)
"data":
{
"type":"light",
"state":true
}
无效的JSON。 JSON中的所有内容都必须包装在对象或数组中。您不能以属性名称开头JSON-它的属性是什么?没有。它必须是某物的属性。因此,您可以选择
{ "type": "light", "state": true }
或
{ "data": { "type": "light", "state": true } }.
第二个更为冗长,是否确实增加了任何价值还值得怀疑。
您可以验证在https://jsonlint.com等网站上编写的任何JSON,但是无论如何您都不应该手工编写JSON。始终序列化一个C#对象,然后在另一端再次反序列化它。这样,C#将确保JSON有效。您要做的就是确保您的对象结构映射足够,以便正确地序列化和反序列化所有必要的属性。
使用结构化格式(例如JSON或XML)比发送任意字符串好得多。有已知的,经过测试的可靠方法可以对数据进行序列化和反序列化,并且您可以非常轻松地传输包含许多属性的复杂对象,也可以非常轻松地对其进行验证。如果您组成了其他基于文本的结构,则必须再次从头开始提供所有这些功能(或者您必须编写机器学习算法来尝试理解任意指令!:-))。这些方案的存在是有原因的,我会利用它们为您带来好处。