【问题标题】:How to parse json key - value to object C# from Request.Properties["MS_QueryNameValuePairs"] [duplicate]如何从Request.Properties [“MS_QueryNameValuePairs”]解析json键值到对象C# [重复]
【发布时间】:2017-10-17 22:31:25
【问题描述】:

我有字符串 json 为

"[{\"Key\":\"a\",\"Value\":\"1\"},{\"Key\":\"b\",\"Value\":\"2\"}}]"

我想解析对象

class abc{
public string a{get; set;}
public string b{get; set;}
}

请帮帮我

【问题讨论】:

  • 您是否遇到了一些错误或什么?我希望您尝试自己找到解决方案,对:) stackoverflow.com/questions/4611031/…
  • 为什么 2K+ 代表用户回答这个明显的重复?阅读How to Answer
  • 否,json 字符串作为键值对。我想将键值对转换为对象类
  • @CodeCaster:这不是一个完全正确的骗局 - 可能有一个,但在这种情况下,复杂性在于它不是像 {Propety: Value} 这样的 json,而是 {Key: "propertyname", Value: "Value"}是一个更难的问题。

标签: c#


【解决方案1】:

你必须Newtonsoft Library 并使用

var dict=  JsonConvert.DeserializeObject<Dictionary<string,int>>("[{\"Key\":\"a\",\"Value\":\"1\"},{\"Key\":\"b\",\"Value\":\"2\"}}]"); 

【讨论】:

  • 附加信息:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“System.Collections.Generic.Dictionary`2[System.String,System.Int32]”,因为该类型需要一个 JSON 对象(例如 {"name":"value"})才能正确反序列化。
【解决方案2】:

Json.NET 是一个流行的 .NET 高性能 JSON 框架

安装这个 nuget 包然后就很简单了:

var json = "[{\"Key\":\"a\",\"Value\":\"1\"},{\"Key\":\"b\",\"Value\":\"2\"}}]";

var items = JsonConvert.DeserializeObject<List<abc>>(json);

【讨论】:

  • 这实际上能处理键/值属性的格式而不是更常见的{a: Value} 类型语法吗?如果我运行代码,我会为 ab 得到 null ...
  • 是的。这是格式键/值
【解决方案3】:

我不知道如何解析为已定义的对象。 但是,您可以使用名为 Newtonsoft 的 .Net 库 JObject o = JObject.Parse(x.ToString());

JObject 是 Newtonsoft.JSON.Linq.JObject 的一个实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多