如何使用c#(经销商俱乐部域检查可用性API集成)在asp.net中读取json响应

时间:2016-02-10 08:25:05

标签: c# asp.net json api

我正在使用this API,从这个API我得到以下输出。

{"apple.com":{"status":"regthroughothers","classkey":"dotin"},"microsoft.com":{"status":"regthroughothers","classkey":"dotin"},"asdfghq.in":{"status":"available","classkey":"dotin"}} 

注意:此输出取决于客户的输入。

现在,您可以建议我如何以表格格式获取此输出,如enter image description here

4 个答案:

答案 0 :(得分:1)

试试这个我转换为DataTable

private string jsonObject = JSON_String.Replace("{", "[{").Replace("}", "}]");

public JsonExample()
        {
            JArray jArray = JArray.Parse(jsonObject);

            DataTable dt = new DataTable();

            dt.Columns.Add("St.No");
            dt.Columns.Add("DomainName");
            dt.Columns.Add("status");
            dt.Columns.Add("classkey");

            foreach (JProperty item in jArray[0])
            {
                var stNo= 0;
                var jArray2 = JArray.Parse(item.Value.ToString());

                foreach (var item2 in jArray2)
                {
                    dt.Rows.Add(++stNo,  item.Name, item2["status"], item2["classkey"]);
                    Console.WriteLine($" St. No: {stNo} DomainName: {item.Name} Status: {item2["status"]}  classkey {item2["classkey"]} ");
                }
            } 
        }

答案 1 :(得分:0)

您可以使用JSON.NET(http://www.newtonsoft.com/json)。如果您从未使用过JSON.NET,可以查看链接中的代码示例以获得一种感觉:http://www.newtonsoft.com/json/help/html/SerializeObject.htm

考虑到JSON.NET中的功能,以下代码可能不是最优雅的方式,但它可以完成您的工作。

private class DomainProp
{
    public string status;
    public string classkey;
}

假设您有上述课程:

string sJSON =@"{'apple.com':'status':'regthroughothers','classkey':'dotin'},
    'microsoft.com':{'status':'regthroughothers','classkey':'dotin'},
    'asdfghq.in':{'status':'available','classkey':'dotin'}}";

Dictionary<string, DomainProp> dicDomainProp = JsonConvert.DeserializeObject<Dictionary<string, DomainProp>>(sJSON);
// get into table format
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("S.No."),
    new DataColumn("Domain Name"),
    new DataColumn("Status"),
    new DataColumn("Classkey") });

int i = 0;
foreach (KeyValuePair<string, DomainProp> pair in dicDomainProp)
    dt.Rows.Add(++i, pair.Key, pair.Value.status, pair.Value.classkey);

答案 2 :(得分:0)

使用Json.NET

轻松解析数据
var input = "{ \"apple.com\":{ \"status\":\"regthroughothers\",\"classkey\":\"dotin\"},\"microsoft.com\":{ \"status\":\"regthroughothers\",\"classkey\":\"dotin\"},\"asdfghq.in\":{ \"status\":\"available\",\"classkey\":\"dotin\"} }";

dynamic data = Newtonsoft.Json.Linq.JObject.Parse(input);

这将返回Name属性为域名的对象列表,其Value属性包含statusclasskey属性包含相应字段的内容

通过将结果声明为dynamic,我们可以使用字典键,就好像它们是对象的属性一样。

将此呈现为表取决于您使用的框架。例如,使用ASP.NET MVC执行此操作的一种简单方法是:

<table class="table">
    <thead>
        <tr>
            <th>S.No.</th>
            <th>Domain Name</th>
            <th>Status</th>
            <th>Class Key</th>
        </tr>
    </thead>
    <tbody>
        @{

            int i = 1;
            foreach (var it in data)
            {
                <tr>
                    <td>@(i++)</td>
                    <td>@it.Name</td>
                    <td>@it.Value.status</td>
                    <td>@it.Value.classkey</td>
                </tr>
                }
            }
    </tbody>
</table>

结果是:

<table>
  <thead>
    <tr>
      <th>S.No.</th>
      <th>Domain Name</th>
      <th>Status</th>
      <th>Class Key</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>apple.com</td>
      <td>regthroughothers</td>
      <td>dotin</td>
    </tr>
    <tr>
      <td>2</td>
      <td>microsoft.com</td>
      <td>regthroughothers</td>
      <td>dotin</td>
    </tr>
    <tr>
      <td>3</td>
      <td>asdfghq.in</td>
      <td>available</td>
      <td>dotin</td>
    </tr>

  </tbody>
</table>

答案 3 :(得分:-2)

1首先将您的json转换为对象形式

将您的json对象复制/防御到json2sharp并将/的模型对象复制到您的代码中

  

http://json2csharp.com/

2将你的json反序列化为modelobject

ModelObject object = new JavaScriptSerializer().Deserialize<ModelObject >(result);