我正在使用this API,从这个API我得到以下输出。
{"apple.com":{"status":"regthroughothers","classkey":"dotin"},"microsoft.com":{"status":"regthroughothers","classkey":"dotin"},"asdfghq.in":{"status":"available","classkey":"dotin"}}
注意:此输出取决于客户的输入。
答案 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
属性包含status
和classkey
属性包含相应字段的内容
通过将结果声明为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并将/的模型对象复制到您的代码中
2将你的json反序列化为modelobject
ModelObject object = new JavaScriptSerializer().Deserialize<ModelObject >(result);