小编ZNS*_*ZNS的帖子

一次反序列化一个项目的json数组流

我将一个大对象数组序列化为json http响应流.现在我想一次一个地从流中反序列化这些对象.是否有任何c#库可以让我这样做?我看过json.net,但似乎我必须立即反序列化完整的对象数组.

[{large json object},{large json object}.....]
Run Code Online (Sandbox Code Playgroud)

澄清:我想一次从流中读取一个json对象并反序列化它.

c# serialization json stream json.net

32
推荐指数
1
解决办法
2万
查看次数

具有不同返回类型的C#通用接口

我有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)

c# generics interface

7
推荐指数
1
解决办法
5546
查看次数

标签 统计

c# ×2

generics ×1

interface ×1

json ×1

json.net ×1

serialization ×1

stream ×1