在C#中有一个字符串,如下所示.我需要循环并创建一个HTML表输出.我try 了JSON.NET,但无法找到如何检索密钥(姓名、年龄和职务).

string data = "{items:[
{'Name':'AAA','Age':'22','Job':'PPP'}
,{'Name':'BBB','Age':'25','Job':'QQQ'}
,{'Name':'CCC','Age':'38','Job':'RRR'}]}";

表格格式是

.........................  
| Name  | Age   | Job   |  
.........................  
| AAA   | 22    | PPP   |  
.........................  
| BBBB  | 25    | QQQ   |  
.........................  
| CCC   | 28    | RRR   |  
.........................   

任何帮助都将不胜感激.


Dave提供的代码是这里的理想解决方案..但它对我有用.NET 4.0..我在JSON中使用了以下代码.净赚.净3.5

使用Newtonsoft.Json.林克;

string jsonString = "{items:[{'Name':'Anz','Age':'29','Job':''},{'Name':'Sanjai','Age':'28','Job':'Developer'},{'Name':'Rajeev','Age':'31','Job':'Designer'}]}";

        JObject root = JObject.Parse(jsonString);

        JArray items = (JArray)root["items"];

        JObject item;
        JToken jtoken;

        for (int i = 0; i < items.Count; i++) //loop through rows
        {
            item = (JObject)items[i];
            jtoken = item.First;

            while (jtoken != null)//loop through columns
            {
                Response.Write(((JProperty)jtoken).Name.ToString() + " : " + ((JProperty)jtoken).Value.ToString() + "<br />");

                jtoken = jtoken.Next;
            }
        }

推荐答案

你可以用.NET 4的动态类型和内置JavaScriptSerializer来实现这一点.也许是这样的:

string json = "{\"items\":[{\"Name\":\"AAA\",\"Age\":\"22\",\"Job\":\"PPP\"},{\"Name\":\"BBB\",\"Age\":\"25\",\"Job\":\"QQQ\"},{\"Name\":\"CCC\",\"Age\":\"38\",\"Job\":\"RRR\"}]}";

var jss = new JavaScriptSerializer();

dynamic data = jss.Deserialize<dynamic>(json);

StringBuilder sb = new StringBuilder();

sb.Append("<table>\n  <thead>\n    <tr>\n");

// Build the header based on the keys in the
//  first data item.
foreach (string key in data["items"][0].Keys) {
        sb.AppendFormat("      <th>{0}</th>\n", key);
}

sb.Append("    </tr>\n  </thead>\n  <tbody>\n");

foreach (Dictionary<string, object> item in data["items"]) {
    sb.Append("    <tr>\n");

    foreach (string val in item.Values) {
        sb.AppendFormat("      <td>{0}</td>\n", val);
    }
}

sb.Append("    </tr>\n  </tbody>\n</table>");

string myTable = sb.ToString();

最后,myTable将包含一个如下所示的字符串:

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Job</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>AAA</td>
            <td>22</td>
            <td>PPP</td>
        <tr>
            <td>BBB</td>
            <td>25</td>
            <td>QQQ</td>
        <tr>
            <td>CCC</td>
            <td>38</td>
            <td>RRR</td>
        </tr>
    </tbody>
</table>

Asp.net相关问答推荐

Windows 命令行中的/p:是什么意思

我可以强制刷新我的样式表文件吗?

是否可以发布 ASP.NET 5 应用程序以使目标机器不需要安装 DNX?

如何在 ASP.NET WebForms 中实现 TDD

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

ASP.NET 如何将控件呈现为 HTML?

如何将配置转换应用于外部配置文件

如何通过 Asp.net 中的命令参数传递多个值?

有没有办法在外部 javascript 文件中使用<%= someObject.ClientID %>?

ASP.NET MVC 中的 ASP.NET AJAX 与 jQuery

无法从 App_code 文件夹中找到类型或命名空间

RestSharp 不反序列化 JSON 对象列表,始终为 Null

使用 Visual Studio 2012 恢复删除的文件

IIS 6.0 通配符映射基准?

问题映射 HttpHandler --> HTTP Error 404 Not Found

如何获取 ASP.NET 应用程序的完整虚拟路径

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

单击按钮时播放哔声

如何判断用户代理是 ipad 还是 iphone?

人们使用 JScript.Net 的目的是什么?