C# 使用asp.net web服务以密钥对格式返回json
我用asp.net和jquery编写了一个项目。在网页的一部分,我有:C# 使用asp.net web服务以密钥对格式返回json,c#,asp.net,json,web-services,C#,Asp.net,Json,Web Services,我用asp.net和jquery编写了一个项目。在网页的一部分,我有: <div id="lookup"> <div class="other"> <div class="st"></div> <ul class="videos"></ul>
<div id="lookup">
<div class="other">
<div class="st"></div>
<ul class="videos"></ul>
<ul class="items"></ul>
在jquery中,部分代码是:
function lookUp() {
n = $("#SearchBox").val().trim(),
r = "All";
n.length >= 2 ? ($.ajax({
url: ServiceUrl + "SearchService.asmx/GetSearchResult",
data: '{keyword: "' + n + '",urlCode:"' + r + '" }',
type: "POST",
contentType: "application/json; charset=utf-8",
timeout: 15000,
processData: !1,
success: function (o) {
o != null && (r == "All" ? (f.show(), u.show().html(o[2].Value.m_StringValue), .........
此代码必须从web服务获取视频类别或产品类别的搜索结果,并使用示例代码或示例代码2填充网页中的视频或项目。
这段代码不起作用。我想确定每个m_StringValue。我知道从web服务返回的不应该是文本,我希望是:
[{"Key":"video","Value": {"m_MaxCapacity":2147483647,"Capacity":64,"m_StringValue":"sample code","m_currentThread":0}},
{"Key":"product","Value": {"m_MaxCapacity":2147483647,"Capacity":55,"m_StringValue":"sample code 2","m_currentThread":0}}]
但我不知道如何更改web服务。我假设您希望将JSON反序列化为.Net类型。您可以使用JavascriptSerializer。首先创建具有JSON中存在的字段名和类型的类,然后反序列化为该类型。例如:
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace loopy
{
class Program
{
static void Main(string[] args)
{
var ser = new JavaScriptSerializer();
string websvcResult = CallWebService();
var keysAndCapacities = ser.Deserialize<List<ServiceResultClass>>(websvcResult);
}
public static string CallWebService()
{
//Call web service here, this is just a mock of course.
return @"[
{
""Key"": ""products"",
""Value"": {
""m_MaxCapacity"": 2147483647,
""Capacity"": 64,
""m_StringValue"": ""<li>sample products or search results in products category</li>"",
""m_currentThread"": 0
}
},
{
""Key"": ""news"",
""Value"": {
""m_MaxCapacity"": 2147483647,
""Capacity"": 55,
""m_StringValue"": ""<li class='noresult'>sample news or search results in news category</li>"",
""m_currentThread"": 0
}
}
]";
}
}
public class ServiceResultClass
{
public string Key { get; set; }
public Capacities Value { get; set; }
}
public class Capacities
{
public long m_MaxCapacity { get; set; }
public string m_StringValue { get; set; }
}
}
如果在干管末端断开并检查钥匙和容量,则会得到以下结果:
试试这个链接谢谢,但是你能解释更多吗?你的链接不喜欢我的问题。我想定义键、值、容量、最大容量。这取决于你想在哪里确定它,在Jacascript中还是在哪里?我想确定最大容量、容量,。。。在asp.net web服务中。为什么要以如此复杂的格式返回JSON?为什么像{video:sample code,product:sample code 2}这样的东西不能用于单个结果,或者像[{video:sample code,product:sample code 2}]这样的东西不能用于多个结果?另外,您是在问我们如何用c编写webservice代码,还是用JavaScript编写jquery代码?
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace loopy
{
class Program
{
static void Main(string[] args)
{
var ser = new JavaScriptSerializer();
string websvcResult = CallWebService();
var keysAndCapacities = ser.Deserialize<List<ServiceResultClass>>(websvcResult);
}
public static string CallWebService()
{
//Call web service here, this is just a mock of course.
return @"[
{
""Key"": ""products"",
""Value"": {
""m_MaxCapacity"": 2147483647,
""Capacity"": 64,
""m_StringValue"": ""<li>sample products or search results in products category</li>"",
""m_currentThread"": 0
}
},
{
""Key"": ""news"",
""Value"": {
""m_MaxCapacity"": 2147483647,
""Capacity"": 55,
""m_StringValue"": ""<li class='noresult'>sample news or search results in news category</li>"",
""m_currentThread"": 0
}
}
]";
}
}
public class ServiceResultClass
{
public string Key { get; set; }
public Capacities Value { get; set; }
}
public class Capacities
{
public long m_MaxCapacity { get; set; }
public string m_StringValue { get; set; }
}
}