反序列化错误 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 中。