ServiceStack.Text DeserializeFromString を長い間使用してきましたが、新しいプロジェクトで問題が発生しました。
オブジェクトに解析する必要がある JSON の形式は次のとおりです。
{"http://SomeUrl.com/":{"http://otherUrl.org/schema#name":[{"value":"val1","type":"val2"}]}}
そのため、オブジェクト名には URL がプレフィックスとして付けられているため、それをクラス メンバー名と照合することはできません。名前をマップするために DataContract を使用しようとしましたが、null オブジェクトを返すだけです。
ServiceStack.Text を使用してこれを行う別の方法はありますか、または JSON を手動で解析する必要がありますか?
どんな助けでも大歓迎です。
編集:
少し遊んで、DataContract 属性を使用してこの問題を解決することができました。指定したクラスのプレフィックスが正しくなかったため、以前は失敗していました。私はそれを次のように解決することができました:
[DataContract]
public class Schools
{
[DataMember(Name = "http://demo.talisaspire.com/")]
public Items Items { get; set; }
}
[DataContract]
public class Items
{
[DataMember(Name = "http://purl.org/vocab/aiiso/schema#code")]
public IEnumerable<Element> Code { get; set; }
[DataMember(Name = "http://purl.org/vocab/aiiso/schema#knowledgeGrouping")]
public IEnumerable<Element> KnowledgeGrouping { get; set; }
[DataMember(Name = "http://purl.org/vocab/aiiso/schema#name")]
public IEnumerable<Element> Name { get; set; }
[DataMember(Name = "http://purl.org/vocab/aiiso/schema#organizationalUnit")]
public IEnumerable<Element> OrganizationalUnit { get; set; }
[DataMember(Name = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type")]
public IEnumerable<Element> Type { get; set; }
}
public class Element
{
public string Type { get; set; }
public string Value { get; set; }
}