C# 使用asp.net web服务以密钥对格式返回json

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>

我用asp.net和jquery编写了一个项目。在网页的一部分,我有:

  <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; }
  }
}