return json 作为密钥对格式与 asp.net 网络服务
return json as key pair format with asp.net web service
我用 asp.net 和 jquery.in 网页的一部分编写了一个项目,我有:
<div id="lookup">
<div class="other">
<div class="st"></div>
<ul class="videos"></ul>
<ul class="items"></ul>
在 Web 服务中,我编写此代码以获取搜索关键字并在视频和产品集合中进行搜索,并且 return 它到 Web page.part 的 Web 服务是:
public string GetSearchResult(string keyword, string urlCode)
{
string test = [sample code];
string test2 = [sample code2];
StringBuilder sb = new StringBuilder(test);
StringBuilder sb2 = new StringBuilder(test2);
return @"[
{
""Key"": ""video"",
""Value"": {
""m_MaxCapacity"": " + sb.MaxCapacity + @",
""Capacity"": " + sb.Capacity + @",
""m_StringValue"": """ + test + @""",
""m_currentThread"": 0
}
},
{
""Key"": ""product"",
""Value"": {
""m_MaxCapacity"": " + sb2.MaxCapacity + @",
""Capacity"": " + sb2.Capacity + @",
""m_StringValue"": """ + test2 + @""",
""m_currentThread"": 0
}
}]";
}
在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), .........
此代码必须从网络服务中获取视频类别或产品类别中的搜索结果,并使用示例代码或示例代码2填充网页中的视频或项目ul。
此代码不起作用。我想确定每个 m_StringValue。我知道来自网络服务的 returned 不应该是文本,我想成为 :
[{"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}}]
但我不知道如何更改网络服务。
我假设您想将 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; }
}
}
如果您在 Main() 的末尾中断并检查 keysAndCapacities,您会得到:
我用 asp.net 和 jquery.in 网页的一部分编写了一个项目,我有:
<div id="lookup">
<div class="other">
<div class="st"></div>
<ul class="videos"></ul>
<ul class="items"></ul>
在 Web 服务中,我编写此代码以获取搜索关键字并在视频和产品集合中进行搜索,并且 return 它到 Web page.part 的 Web 服务是:
public string GetSearchResult(string keyword, string urlCode)
{
string test = [sample code];
string test2 = [sample code2];
StringBuilder sb = new StringBuilder(test);
StringBuilder sb2 = new StringBuilder(test2);
return @"[
{
""Key"": ""video"",
""Value"": {
""m_MaxCapacity"": " + sb.MaxCapacity + @",
""Capacity"": " + sb.Capacity + @",
""m_StringValue"": """ + test + @""",
""m_currentThread"": 0
}
},
{
""Key"": ""product"",
""Value"": {
""m_MaxCapacity"": " + sb2.MaxCapacity + @",
""Capacity"": " + sb2.Capacity + @",
""m_StringValue"": """ + test2 + @""",
""m_currentThread"": 0
}
}]";
}
在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), .........
此代码必须从网络服务中获取视频类别或产品类别中的搜索结果,并使用示例代码或示例代码2填充网页中的视频或项目ul。 此代码不起作用。我想确定每个 m_StringValue。我知道来自网络服务的 returned 不应该是文本,我想成为 :
[{"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}}]
但我不知道如何更改网络服务。
我假设您想将 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; }
}
}
如果您在 Main() 的末尾中断并检查 keysAndCapacities,您会得到: