反序列化错误 json
Deserialize bad json
我有一个来自第三方应用程序的 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 被剪掉了:
我该如何解决这个问题?
Json 字符串应该用双引号括起来,例如:
{
"1": {
"number": 1,
"headline": "Nyttigt",
"value": 9,
"type": "value"
},
"2": {
"number": 4,
"headline": "",
"value":0,
"type": "order"
}}
你是如何建立响应的?
您拥有的数据不是 JSON,但如果没有空格,它是有效的 JSV format。 ServiceStack.Text 支持序列化和反序列化 JSV。
所以给定数据:
{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}}
和 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 中。
我有一个来自第三方应用程序的 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 被剪掉了:
我该如何解决这个问题?
Json 字符串应该用双引号括起来,例如:
{
"1": {
"number": 1,
"headline": "Nyttigt",
"value": 9,
"type": "value"
},
"2": {
"number": 4,
"headline": "",
"value":0,
"type": "order"
}}
你是如何建立响应的?
您拥有的数据不是 JSON,但如果没有空格,它是有效的 JSV format。 ServiceStack.Text 支持序列化和反序列化 JSV。
所以给定数据:
{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}}
和 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 中。