有些代码(我无法更改)使用Newtonsoft.Json DeserializeObject<T>(strJSONData)从Web请求中获取数据并将其转换为类对象(我可以更改类).通过使用我的类属性进行装饰,[DataMember(Name = "raw_property_name")]我可以将原始JSON数据映射到我的类中的正确属性.有没有办法可以将JSON复杂对象的子属性映射到一个简单的属性?这是一个例子:
{
"picture":
{
"id": 123456,
"data":
{
"type": "jpg",
"url": "http://www.someplace.com/mypicture.jpg"
}
}
}
Run Code Online (Sandbox Code Playgroud)
除了URL之外,我不关心任何其他图片对象,因此不想在我的C#类中设置复杂对象.我真的只想要这样的东西:
[DataMember(Name = "picture.data.url")]
public string ProfilePicture { get; set; }
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我有一条 JSON 消息要使用包含另一个对象的 JSON 的字符串属性进行反序列化。我有以下课程
public class Envelope
{
public string Type { get; set; }
public Message InnerMessage { get; set; }
}
public class Message
{
public string From { get; set; }
public string To { get; set; }
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我收到的 JSON 消息采用以下格式:
{
Type : "send",
InnerMessage : "{ From: \"sender\", To: \"receiver\", Body: \"test\" }"
}
Run Code Online (Sandbox Code Playgroud)
请注意,它InnerMessage包含类的序列化Message,而不是类的 JSON。
InnerMessage如果我将属性的类型保留为Message,标准 JSON.NET 反序列化将失败。 …
我正在使用下面的代码进行序列化。
var json = JsonConvert.SerializeObject(new { summary = summary });
Run Code Online (Sandbox Code Playgroud)
summary是类型的自定义对象SplunkDataModel:
public class SplunkDataModel
{
public SplunkDataModel() {}
public string Category { get; set; }
public int FailureCount { get; set; }
public Dictionary<string, SplunkError> FailureEntity { get; set; }
public Dictionary<string, string> JobInfo { get; set; }
public string JobStatus { get; set; }
public int SuccessCount { get; set; }
public List<string> SuccessEntity { get; set; }
public int TotalCount { get; set; }
} …Run Code Online (Sandbox Code Playgroud)