将JSON字符串转换为C#字典。

14
{"我有一个 JSON 字符串"}
{
  "Date":"21/11/2010"
  "name": "TEST"
  "place":"xyz"
}

我想将它转换为C#字典对象,但不使用第三方库。


6
也许你可以考虑使用第二方。 - lordkain
8
不要因为不喜欢不使用第三方库的选择而进行负评。也许有很好的理由。所以在评判之前请先澄清。 - zewa666
1
没有必要。每次都重新发明轮子。 但是如果他想这样做,那么他应该向我们展示他的努力和确切的问题。 - jAC
1
这些prop-value键值对应该用逗号分隔,对吧? - Sameer Singh
1
有时候了解一个框架的作用是非常有帮助的,而不是盲目地使用它。因此,学习是选择一个完整API而不仅仅是一个小功能的原因之一。 - zewa666
显示剩余4条评论
2个回答

29

自 .NET 3.5 起,你可以使用 JsonSerializer 原生地实现它。

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string,string>>(jsonText);
var place = dict["place"]; // "xyz"

以下是您的案例的简单教程:C#中快速JSON序列化/反序列化

需要引用System.Web.Extensions。如果找不到它,则您的程序可能使用了客户端目标框架。请使用“完整”目标框架。


谢谢,xanatos。我正在使用智能手机,所以编辑起来有些不方便。你的工作做得很好。 - zewa666
2
这对我不起作用(VS2010)。它会出现错误“未为类型'System.String'定义无参数构造函数”。 - ekkis
@zewa666 谢谢,伙计!我花了4个小时才找到一个非常好的解决方案。这个解决方案遵循KISS原则。 - Never Quit
和 @ekkis 一样的问题,按照示例不起作用。然而,当你遵循教程链接使用 <string, dynamic> 或仅使用 dynamic 时,就能够起作用。 - Levon

1

现在(暂时)您可以按照以下方式使用内置的System.Text.Json进行此操作:

var dict = JsonSerializer.Deserialize<Dictionary<string, string>>(jsonString);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接