我有一个json架构,我需要将它转换为C#对象或至少转换为json字符串。
有什么办法可以通过代码或使用某种工具来实现吗?
对于Json我目前正在使用Json.net
。
这是我的架构之一:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "UserGroupWsDTO",
"type": "object",
"properties":
{
"members":
{
"type": "array",
"items":
{
"type": "object",
"properties":
{
"uid":
{
"type": "string"
}
}
}
},
"uid":
{
"type": "string"
},
"name":
{
"type": "string"
}
}
}
我需要这个来创建一个用于反序列化json的对象
修改 我的Json架构版本是4,而POCO的JSON Schema不支持它
答案 0 :(得分:1)
查看支持v3 JSON的JSON Schema to POCO。
答案 1 :(得分:0)
如果您只是“浏览”key-values
,那么您不需要任何额外的库...
只是这样做:
var obj = (JObject)JsonConvert.DeserializeObject(json);
var dict = obj.First.First.Children().Cast<JProperty>()
.ToDictionary(p => p.Name, p =>p.Value);
var dt = (string)dict["title"];
但是如果您需要字符串的对象,那么定义一个类并将该字符串反序列化为该类...请按照以下示例:
首先定义类:
public class Uid
{
public string type { get; set; }
}
public class Properties2
{
public Uid uid { get; set; }
}
public class Items
{
public string type { get; set; }
public Properties2 properties { get; set; }
}
public class Members
{
public string type { get; set; }
public Items items { get; set; }
}
public class Uid2
{
public string type { get; set; }
}
public class Name
{
public string type { get; set; }
}
public class Properties
{
public Members members { get; set; }
public Uid2 uid { get; set; }
public Name name { get; set; }
}
public class RootObject
{
public string __invalid_name__$schema { get; set; }
public string title { get; set; }
public string type { get; set; }
public Properties properties { get; set; }
}
这是实施:
string json = @"{...use your json string here }";
RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
Console.WriteLine(root.title);
// UserGroupWsDTO