【问题标题】:How to remove remove key value from JSON using C#如何使用 C# 从 JSON 中删除键值
【发布时间】:2021-04-25 10:30:07
【问题描述】:

我有一个 json 响应,我需要在绑定到 GridView 之前对其进行编辑。我正在使用 Newtonsoft JSON 库。当从字符串中删除“值”时,数据完美地绑定到 GridView。将值添加到 json 响应时,我会收到此错误消息。

Message=Unexpected JSON token when reading DataTable. Expected StartArray, got StartObject. Path '', line 1, position 1.

如何在绑定到 GridView 之前从 jsonResponse 中删除“值”?

<asp:GridView ID="gvJson" runat="server" BackColor="White" BorderColor="#3399ff"
        BorderStyle="Dotted" BorderWidth="1px" CellPadding="3" GridLines="Both" AutoGenerateColumns="true"></asp:GridView>

    var jsonResponse = "{\"values\":[{\"id\":\"201\",\"name\":\"Zack\"},{\"id\":\"158\",\"name\":\"Kim\"},{\"id\":\"254\",\"name\":\"Scott\"}]}";

    DataTable dataTable = JsonConvert.DeserializeObject<DataTable>(jsonResponse);

    gvJson.DataSource = dataTable;
    gvJson.DataBind();

我的 JSON:

{
    "values": [
        {
            "id": "201",
            "name": "Zack"
        },
        {
            "id": "158",
            "name": "Kim"
        },
        {
            "id": "254",
            "name": "Scott"
        }
    ]
}

【问题讨论】:

  • 取决于您使用的 Json 库。您能否指定并编辑您的问题以显示 未转义 Json?
  • 您可以将 JSON 反序列化为类对象的集合,然后将该集合绑定到 GridView。那会更简单。您可以使用 json2csharp.com 从您的 JSON 创建类。

标签: c# arrays json .net


【解决方案1】:

有几种方法可以做到这一点..

你可以使用JObject

var dataTable = JObject
      .Parse(jsonResponse)["values"]
      .ToObject<DataTable>();

或者按照建议,将Json完全反序列化为具体的类,并直接绑定数组来控制

给定

public class Value    
{
   public string id { get; set; } 
   public string name { get; set; } 
}

public class Root   
{
   public List<Value> values { get; set; } 
}

用法

var root = JsonConvert.DeserializeObject<Root>(jsonResponse);
// your Data , root.Data

【讨论】:

    【解决方案2】:

    除了从 JSON 响应中删除 values 之外,您应该能够执行类似的操作

    var jsonObject = JObject.Parse(jsonResponse);
    var dataTable = JsonConvert.DeserializeObject<DataTable>(jsonObject["values"].ToString());
    
    gvJson.DataSource = dataTable;
    gvJson.DataBind();
    

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多