我有一些JSON
形成如下:
{
"snippet-format":"raw",
"total":1,"start":1,
"page-length":200, ...
}
我有一个名为Total,Start等成员的C#DTO。这些成功地将上面的值放入其中。我不知道如何为上面的代码段格式和页长JSON项命名属性。
我尝试过SnippetFormat和Snippet_Format无济于事。
有人可以指出我正确的方向。
另外,如果某个值恰好是W3C xs:dateTime string
,那么我可以使用ServiceStack
会自动填充的类型吗?
提前致谢。
答案 0 :(得分:0)
Checked into the next version,Lenient属性约定现在支持带连字符的属性,因此您可以这样做:
public class Hyphens
{
public string SnippetFormat { get; set; }
public int Total { get; set; }
public int Start { get; set; }
public int PageLength { get; set; }
}
JsConfig.PropertyConvention = JsonPropertyConvention.Lenient;
var json = @"{
""snippet-format"":""raw"",
""total"":1,
""start"":1,
""page-length"":200
}";
var dto = json.FromJson<Hyphens>();
Assert.That(dto.SnippetFormat, Is.EqualTo("raw"));
Assert.That(dto.Total, Is.EqualTo(1));
Assert.That(dto.Start, Is.EqualTo(1));
Assert.That(dto.PageLength, Is.EqualTo(200));
与此同时,你必须动态解析它,例如:
var map = JsonObject.Parse(json);
Assert.That(map["snippet-format"], Is.EqualTo("raw"));
Assert.That(map["total"], Is.EqualTo("1"));
Assert.That(map["start"], Is.EqualTo("1"));
Assert.That(map["page-length"], Is.EqualTo("200"));