我有来自第三方应用程序的json响应,如下所示:
{
1: {
number: 1,
headline: Nyttigt,
value: 9,
type: value
},
2: {
number: 4,
headline: ,
value: 0,
type: order
},
3: {
number: 5,
headline: Generellt-Sortiment/utbud,
value: 9,
type: value
},
4: {
number: 5,
headline: Generellt-Leveranser,
value: 9,
type: value
},
5: {
number: 5,
headline: ,
value: 0,
type: order
}
}
我正在尝试使用 ServiceStack JsonObject.Parse(jsonResult);
问题在于json被切断了:
我该如何解决这个问题?
答案 0 :(得分:1)
Json字符串应该用双引号括起来,例如:
{
"1": {
"number": 1,
"headline": "Nyttigt",
"value": 9,
"type": "value"
},
"2": {
"number": 4,
"headline": "",
"value":0,
"type": "order"
}}
你是如何建立回应的?
答案 1 :(得分:1)
您拥有的数据不是JSON,但没有空格,它有效JSV format。 ServiceStack.Text支持序列化和反序列化JSV。
所以给出了数据:
{1:{数:1,标题:Nyttigt,值:9,类型:值},2:{数:4,标题:,值:0,类型:顺序},3:{数:5,标题:Generellt-Sortiment / utbud,值:9,类型:值},4:{数:5,标题:Generellt-Leveranser,值:9,类型:值},5:{数:5,标题:,值:0,类型:为了}}
和DTO:
public class Item
{
public int Number { get; set; }
public string Headline { get; set; }
public int Value { get; set; }
public ItemType Type { get; set; }
}
public enum ItemType
{
value,
order
}
您可以对其进行反序列化:
var data = "{1:{number:1 ....";
var items = data.FromJsv<Dictionary<int,Item>> ();
因此,您可以使用请求过滤器将JSV中的请求反序列化到您的DTO中。