将Json数据包含在变量中,并希望在asp.net中以表格形式显示该数据

问题描述 投票:-1回答:3

我想使用ASP.NET将其转换为表格格式

responsebody= [{
        "name": "apple.com",
        "status": "regthroughothers",
        "classkey": "domcno"
    },
    {
        "name": "asdfgqwx.com",
        "status": "available",
        "classkey": "domcno"
    },
    {
        "name": "microsoft.org",
        "status": "unknown",
        "classkey": ""
    },
    {
        "name": "apple.org",
        "status": "unknown",
        "classkey": ""
    },
    {
        "name": "microsoft.com",
        "status": "regthroughothers",
        "classkey": "domcno"
    },
    {
        "name": "asdfgqwx.org",
        "status": "unknown",
        "classkey": "domcno"
    }]
c# asp.net arrays json tabular
3个回答
0
投票

您需要Newtonsoft.JsonConvert NuGet包才能将JSON转换为与C#兼容的类型。在解决方案资源管理器中右键单击您的项目,然后单击“管理NuGet软件包”,然后搜索并安装它。

您还需要创建一个新类,以正确的格式存储数据。右键单击您的项目,将鼠标悬停在“添加”上,然后单击“类”。假设您所有的数据都是字符串格式:

public class Data
    {
        public string name { get; set; }
        public string status { get; set; }
        public string classkey { get; set; }
    }

返回到JSON变量所在的位置,添加using Newtonsoft.Json;,然后使用如下代码:

List<Data> deserializedData = JsonConvert.DeserializeObject<List<Data>>(your variable name here);

这将在数据类型列表中获取您的数据。从那里,您可以将其插入SQLite数据库或执行任何操作,但是您需要使您的问题更具体地说明“表格”的含义。


0
投票

Visual Studio中>

步骤1:通过JSON或(clipboard + right-click)将CtrC复制到C

[{
        "name": "apple.com",
        "status": "regthroughothers",
        "classkey": "domcno"
    },
    {
        "name": "asdfgqwx.com",
        "status": "available",
        "classkey": "domcno"
    },
    {
        "name": "microsoft.org",
        "status": "unknown",
        "classkey": ""
    },
    {
        "name": "apple.org",
        "status": "unknown",
        "classkey": ""
    },
    {
        "name": "microsoft.com",
        "status": "regthroughothers",
        "classkey": "domcno"
    },
    {
        "name": "asdfgqwx.org",
        "status": "unknown",
        "classkey": "domcno"
    }]

第2步:将指针放在要写的位置。

选择Edit >>[C0

> Paste Special

结果:

Paste JSON as Classes

[Step3:您可以根据需要更改某些内容。然后,使用 public class Rootobject { public Class1[] Property1 { get; set; } } public class Class1 { public string name { get; set; } public string status { get; set; } public string classkey { get; set; } } 进行工作。


0
投票

我想答案取决于您使用的是ASP.NET MVC还是WebForms,内置类型还是第三方库。

这里是MVC的示例。

1。您的控制器动作类似于:

JsonConvert.DeserializeObject<Foo>(yourString)

和DisplayJsonData.cshtml视图:

public ActionResult DisplayJsonData()
        {
            var json = @"{
                'items' : [{
                        'name': 'apple.com',
                        'status': 'regthroughothers',
                        'classkey': 'domcno'
                    },
                    {
                        'name': 'asdfgqwx.com',
                        'status': 'available',
                        'classkey': 'domcno'
                    },
                    {
                        'name': 'microsoft.org',
                        'status': 'unknown',
                        'classkey': ''
                    },
                    {
                        'name': 'apple.org',
                        'status': 'unknown',
                        'classkey': ''
                    },
                    {
                        'name': 'microsoft.com',
                        'status': 'regthroughothers',
                        'classkey': 'domcno'
                    },
                    {
                        'name': 'asdfgqwx.org',
                        'status': 'unknown',
                        'classkey': 'domcno'
                    }
                ]
            }"; 

            var model = JsonConvert.DeserializeObject<DisplayJsonModel>(json);
            return View(model);
        }
  1. 如上所述,您还需要解析JSON。

    公共类DisplayJsonModel{公共JsonItem []项{get;组; }}

    @model WebApplication2.Models.DisplayJsonModel
    @{
        ViewBag.Title = "DisplayJsonData";
    }
    
    <h2>DisplayJsonData</h2>
    
    <table class="table">
        <thead>
            <tr>
                <th>Name</th>
                <th>Status</th>
                <th>Class Key</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.Items)
            {
                <tr>
                    <td>@item.name</td>
                    <td>@item.status</td>
                    <td>@item.classkey</td>
                </tr>
            }
        </tbody>
    </table>
    

这里是纯JS:

public class JsonItem
{
    public string name { get; set; }
    public string status { get; set; }
    public string classkey { get; set; }
}

对于Web窗体您可能想研究在aspx页面中使用asp:DataGrid之类的东西:

<table class="table">
    <thead>
    <tr>
        <th>Name</th>
        <th>Status</th>
        <th>Class Key</th>
    </tr>
    </thead>
    <tbody id="jsTableBody"></tbody>
</table>

<script>
    var responsebody = [
        {
            "name": "apple.com",
            "status": "regthroughothers",
            "classkey": "domcno"
        },
        {
            "name": "asdfgqwx.com",
            "status": "available",
            "classkey": "domcno"
        },
        {
            "name": "microsoft.org",
            "status": "unknown",
            "classkey": ""
        },
        {
            "name": "apple.org",
            "status": "unknown",
            "classkey": ""
        },
        {
            "name": "microsoft.com",
            "status": "regthroughothers",
            "classkey": "domcno"
        },
        {
            "name": "asdfgqwx.org",
            "status": "unknown",
            "classkey": "domcno"
        }
    ];

    var tableRows = [];
    for (var i = 0; i < responsebody.length; i++) {
        tableRows.push("<tr>" +
            "<td>" + responsebody[i].name + "</td>" + 
            "<td>" + responsebody[i].status + "</td>" + 
            "<td>" + responsebody[i].classkey + "</td>" + 
            "</tr>");
    }
    var tableBody = document.getElementById("jsTableBody");
    tableBody.innerHTML = tableRows.join('');
</script>

和在代码后:

<asp:DataGrid runat="server" ID="grid" AutoGenerateColumns="False" CssClass="table table-bordered">
<Columns>
  <asp:BoundColumn DataField="name" HeaderText="Name" />
  <asp:BoundColumn DataField="status" HeaderText="Status" />
  <asp:BoundColumn DataField="classkey" HeaderText="Class Key" />
</Columns>
</asp:DataGrid>
© www.soinside.com 2019 - 2024. All rights reserved.