【发布时间】:2018-02-15 17:45:33
【问题描述】:
我正在平板电脑和 PC 之间实现客户端/服务器,我需要来回传递数据。在做了一些阅读 json 之后,它看起来可能是一个简单的、定义好的接口来使用。我在我的项目中使用 Newtonsoft.Json。
我的理解是,除非在架构中按要求定义,否则每个名称/值对不必在每条消息中。如果这是真的,我正在努力解决如何在反序列化 json 对象以确定消息中发送的名称之后解析它。
例如,如果我正在发送天气数据并且可以发送看起来像这样的 json 数据
{ "isRaining": false,
"isSnowing": false,
"temp": 50.0
}
如果我总是发送所有三个,那么我可以创建一个具有相同成员的类并在我反序列化时分配数据。
public class Weather
{
public bool isRaining { get; set; }
public bool isSnowing { get; set; }
public float temp { get; set; }
}
Weather readWeather = JsonConvert.DeserializeObject<Weather>(data);
但我不想每次传输都发送所有数据。我真的只想知道是否发生了变化,然后如果温度上升,则只获取临时名称/值对,如果下雨还是下雪没有改变,我不想获取该数据。
看起来至少以这种方式反序列化数据,我无法为每个循环执行一次以查看存在哪些名称。有没有办法做到这一点?还是我一直卡在发送所有数据?
我会在我的实际实现中发送更多数据,为了简单起见,我在这里只放了三对。
【问题讨论】: