在C#中将字符串转换为JSON

Tri*_*rip 8 c# json simplejson

我正在尝试使用Simple JSON将此字符串转换为JSON:

"{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}"
Run Code Online (Sandbox Code Playgroud)

不幸的是,Visual Studio似乎没有交互式调试控制台.就像在一起,将调试器放在一行上,然后在实时交互式控制台中插入代码的那一部分.否则,我将能够尝试使用SimpleJSON的库,并了解如何使其工作.无论如何,如果我错了,请纠正我!

虽然那是不可能的,但有人会知道如何实现这一目标吗?我试过这个:

JSONData jsonData = new JSONData(my_json_string);
Run Code Online (Sandbox Code Playgroud)

但是,它会更多地转义字符串并保持字符串:

"\"{\\\"objects\\\":[{\\\"id\\\":1,\\\"title\\\":\\\"Book\\\",\\\"position_x\\\":0,\\\"position_y\\\":0,\\\"position_z\\\":0,\\\"rotation_x\\\":0,\\\"rotation_y\\\":0,\\\"rotation_z\\\":0,\\\"created\\\":\\\"2016-09-21T14:22:22.817Z\\\...
Run Code Online (Sandbox Code Playgroud)

我是C#的新手,但我很惊讶C#没有任何原生内容可以解析JSON更易于访问的内容.有吗?

M. *_*cki 12

首先,创建数据模型.你可以使用json2sharp,非常有用的工具.

public class Item
{
    public int id { get; set; }
    public string title { get; set; }
    public int position_x { get; set; }
    public int position_y { get; set; }
    public int position_z { get; set; }
    public int rotation_x { get; set; }
    public int rotation_y { get; set; }
    public int rotation_z { get; set; }
    public string created { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

接下来使用Newtonsoft.Json并调用deserialize方法.

var list = JsonConvert.DeserializeObject<List<Item>>(Yourjson);
Run Code Online (Sandbox Code Playgroud)

  • 关于json2csharp的好注意事项 - 它是一个救生员,我已经用它了很多*.VS中也内置了一个有用的,鲜为人知的工具(那些使用它的人).将JSON复制到剪贴板,然后创建/打开代码文件.单击"编辑">"选择性粘贴">"将JSON粘贴为类".做同样的工作,直接在IDE :)*还有一个XML As Classes选项* (6认同)

Rum*_*ish 10

问题问的是如何将字符串转换为JSON对象...这可以在不使用Class或数据模型的情况下实现,如下所示:

using Newtonsoft.Json;

string str = "{\"objects\":[{\"id\":1,\"title\":\"Book\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:22.817Z\"},{\"id\":2,\"title\":\"Apple\",\"position_x\":0,\"position_y\":0,\"position_z\":0,\"rotation_x\":0,\"rotation_y\":0,\"rotation_z\":0,\"created\":\"2016-09-21T14:22:52.368Z\"}]}";
dynamic json = JsonConvert.DeserializeObject(str);
Run Code Online (Sandbox Code Playgroud)

现在,您可以按如下方式访问 json 内容:

json["objects"][0]["title"];

returns "Book"
Run Code Online (Sandbox Code Playgroud)

“交互式调试控制台”的一个选项,您可以在其中使用 C# 代码是Xamarin Workbooks ... microsoft.com/en-us/xamarin/tools/workbooks/

Xamarin 工作簿提供了文档和代码的混合,非常适合实验、学习和创建......等等

  • @ahong,他们有不同的目的。当你可以在编译时确定类型时使用 Var。使用dynamic,然后在运行时动态确定/生成类型 (2认同)