C# WCF服务返回列表。需要在一个Json字符串中返回2个对象
这是我的第一个堆栈溢出帖子,所以让我放松一下:) 我已经为这个问题挣扎了很长一段时间 目前,我的WCF从数据库读取数据并将其作为JSON返回 这就是它的样子:C# WCF服务返回列表。需要在一个Json字符串中返回2个对象,c#,json,wcf,C#,Json,Wcf,这是我的第一个堆栈溢出帖子,所以让我放松一下:) 我已经为这个问题挣扎了很长一段时间 目前,我的WCF从数据库读取数据并将其作为JSON返回 这就是它的样子: { "shoppinglistitemsResult": [ { "description": "this is my notes description", "name": "mynotename", "pid": "1",
{
"shoppinglistitemsResult": [
{
"description": "this is my notes description",
"name": "mynotename",
"pid": "1",
"status": "1",
"username": "test"
}
]
}
我希望它看起来像这样:
{
"shoppinglistitemsResult": [
{
"description": "123",
"name": "123",
"pid": "123",
"status": "123",
"username": "test"
}
],
"success": 1
}
最后有一个额外的对象
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "displayAllNotes?name={username}&pass={password}")]
List<Service1.wsNotes> shoppinglistitems(string username, string password);
[运营合同]
[WebInvoke(Method=“GET”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped,UriTemplate=“displayAllNotes?name={username}&pass={password}”)]
列出shoppinglistitems(字符串用户名、字符串密码);
然后构建一个包含列表和所需额外对象的类作为成员,并以json的形式返回该类的实例。然后构建一个包含列表和所需额外对象的类作为成员,并以json的形式返回该类的实例。您需要返回一个同时包含列表和对象的对象属性,而不是直接使用列表。将JSON中的每一组花括号都视为需要创建的新对象/类,并将逗号分隔的所有内容视为该对象上的属性。因此,外部花括号需要由一个具有两个属性(shoppinglistitemsResult和success)的类表示。您需要为列表中的所有项目设置第二个类
这里有一种使用泛型的方法。我还冒昧地添加了一些您可能想要使用的附加属性。对于不需要返回值但可能希望返回成功或错误消息的操作,我还包括了一个没有“Result”的响应类型
[DataContract]
public class Response : IExtensibleDataObject
{
public Response()
{
Success = true;
ErrorMessage = null;
}
[DataMember]
public bool Success { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
public ExtensionDataObject ExtensionData { get; set; }
}
[DataContract]
public class Response<TResult> : Response
{
[DataMember]
public TResult Result { get; set; }
}
[DataContract]
公共类响应:IExtensibleDataObject
{
公众回应(
{
成功=真实;
ErrorMessage=null;
}
[数据成员]
公共bool成功{get;set;}
[数据成员]
公共字符串错误消息{get;set;}
公共扩展数据对象扩展数据{get;set;}
}
[数据合同]
公共课回应:回应
{
[数据成员]
公共TResult结果{get;set;}
}
然后你的运营合同会像这样
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "displayAllNotes?name={username}&pass={password}")]
Response<List<Notes>> GetShoppingListItems();
[运营合同]
[WebInvoke(Method=“GET”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped,UriTemplate=“displayAllNotes?name={username}&pass={password}”)]
响应GetShoppingListItems();
您需要返回一个同时包含list和success属性的对象,而不是直接返回list。将JSON中的每一组花括号都视为需要创建的新对象/类,并将逗号分隔的所有内容视为该对象上的属性。因此,外部花括号需要由一个具有两个属性(shoppinglistitemsResult和success)的类表示。您需要为列表中的所有项目设置第二个类
这里有一种使用泛型的方法。我还冒昧地添加了一些您可能想要使用的附加属性。对于不需要返回值但可能希望返回成功或错误消息的操作,我还包括了一个没有“Result”的响应类型
[DataContract]
public class Response : IExtensibleDataObject
{
public Response()
{
Success = true;
ErrorMessage = null;
}
[DataMember]
public bool Success { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
public ExtensionDataObject ExtensionData { get; set; }
}
[DataContract]
public class Response<TResult> : Response
{
[DataMember]
public TResult Result { get; set; }
}
[DataContract]
公共类响应:IExtensibleDataObject
{
公众回应(
{
成功=真实;
ErrorMessage=null;
}
[数据成员]
公共bool成功{get;set;}
[数据成员]
公共字符串错误消息{get;set;}
公共扩展数据对象扩展数据{get;set;}
}
[数据合同]
公共课回应:回应
{
[数据成员]
公共TResult结果{get;set;}
}
然后你的运营合同会像这样
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "displayAllNotes?name={username}&pass={password}")]
Response<List<Notes>> GetShoppingListItems();
[运营合同]
[WebInvoke(Method=“GET”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped,UriTemplate=“displayAllNotes?name={username}&pass={password}”)]
响应GetShoppingListItems();
谢谢您的回答。我真的很难将两个对象返回到一个类。说到c#和wcf,我真的不太好。如果我有一个2数组。我如何在一个类中同时返回它们?如果这能让你更容易,你可以写下你认为JSON应该是什么样子,然后从那里返回到你的结果类中。如果你需要返回两个列表,你可以创建一个有两个属性的类(每个列表一个属性)。然后返回该类的一个实例。如果你需要进一步的澄清,只需回复,我就可以写一个例子。谢谢你的回答。我真的很难将两个对象返回到一个类。说到c#和wcf,我真的不太好。如果我有一个2数组。我如何在一个类中同时返回它们?如果这能让你更容易,你可以写下你认为JSON应该是什么样子,然后从那里返回到你的结果类中。如果你需要返回两个列表,你可以创建一个有两个属性的类(每个列表一个属性)。然后返回该类的一个实例。如果你需要进一步的澄清,只需回复,我就可以写一个例子。