1

私はJSONこのように形成されたものがあります:

 {
  "snippet-format":"raw",
  "total":1,"start":1,
  "page-length":200, ... 
 }

Total、Startなどのメンバーを持つC#DTOがあります。これらは、上記の値が正常に配置されています。ただし、上記のスニペット形式とページ長のJSONアイテムのプロパティに名前を付ける方法はわかりません。

SnippetFormatとSnippet_Formatを試しましたが無駄になりました。

誰かが私を正しい方向に向けてくれませんか。

また、値がたまたまである場合、自動的に入力されるW3C xs:dateTime stringタイプを使用できますか?ServiceStack

前もって感謝します。

4

1 に答える 1

0

ServiceStack.Text v3.9.43 +の次のバージョンにチェックインすると、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"));
于 2013-03-23T16:51:39.337 に答える