我将一个大对象数组序列化为json http响应流.现在我想一次一个地从流中反序列化这些对象.是否有任何c#库可以让我这样做?我看过json.net,但似乎我必须立即反序列化完整的对象数组.
[{large json object},{large json object}.....]
Run Code Online (Sandbox Code Playgroud)
澄清:我想一次从流中读取一个json对象并反序列化它.
我有webservice,可以返回多种格式的数据.例如json和xml.我正在构建一个简单的C#api来对付这个web服务,我希望这些方法能够从json,raw json或raw xml返回完全序列化的对象.例如:
List<Order> GetOrders(int customerId)
string GetOrders(int customerId)
XMLDocument GetOrders(customerId)
Customer GetCustomer(int customerId)
string GetCustomer(int customerId)
XMLDocument GetCustomer(int customerId)
Run Code Online (Sandbox Code Playgroud)
我有一个关于做一个流畅的api的想法,你可以调用一个SetFormat()方法,然后返回上述方法的通用接口.但我仍然坚持该接口的样子,因为返回序列化对象的实现返回不同类型的对象.
另一个更简单的解决方案是只返回返回序列化对象的方法,然后像这样添加一个out参数:
List<Order> GetOrders(int customerId, out string data)
Run Code Online (Sandbox Code Playgroud)
但我认为这不是一个很好的解决方案....
UPDATE
我更喜欢Sjoerd建议的非通用解决方案,我过度复杂了我的问题.这就是我最终做的事情:
public class ServiceEntity {
List<Order> GetOrders(int customerId)....
}
public class ServiceJson {
string GetOrders(int customerId)....
}
public class ServiceXml {
XmlDocument GetOrders(int customerId)....
}
Run Code Online (Sandbox Code Playgroud)
然后像这样一个流畅的服务类:
public class Service : IService {
....
public AsJson() { return new ServiceJson(); }
public AsEntity() { return new ServiceEntity(); }
public AsXml() { …
Run Code Online (Sandbox Code Playgroud)