ServiceStack.Text错了Json解析

时间:2014-02-12 11:13:11

标签: c# json servicestack-text

我正在尝试解析来自MtG​​ox自动收录机的json。 http://data.mtgox.com/api/2/BTCUSD/money/ticker

我尝试了两种方法,结果相同。

  1. JsonObject d1 = JsonSerializer.DeserializeString(downloadeddata)
  2. JsonObject d2 = JsonObject.Parse(downloadeddata)
  3. 当我尝试访问d1 [“data”]时,它似乎是反序列化的完美字符串=>

    {
        [data, {
                "high" : {
                    "value" : "600.00000",
                    "value_int" : "60000000",
                    "display" : "$600.00",
                    "display_short" : "$600.00",
                    "currency" : "USD"
                },
                "low" : {
                    "value" : "515.00000",
                    "value_int" : "51500000",
                    "display" : "$515.00",
                    "display_short" : "$515.00",
                    "currency" : "USD"
                },
                "avg" : {
                    "value" : "557.60317",
                    "value_int" : "55760317",
                    "display" : "$557.60",
                    "display_short" : "$557.60",
                    "currency" : "USD"
                },
                "vwap" : {
                    "value" : "554.60404",
                    "value_int" : "55460404",
                    "display" : "$554.60",
                    "display_short" : "$554.60",
                    "currency" : "USD"
                },
                "vol" : {
                    "value" : "20623.02466981",
                    "value_int" : "2062302466981",
                    "display" : "20,623.02\u00a0BTC",
                    "display_short" : "20,623.02\u00a0BTC",
                    "currency" : "BTC"
                },
                "last_local" : {
                    "value" : "527.00000",
                    "value_int" : "52700000",
                    "display" : "$527.00",
                    "display_short" : "$527.00",
                    "currency" : "USD"
                },
                "last_orig" : {
                    "value" : "527.00000",
                    "value_int" : "52700000",
                    "display" : "$527.00",
                    "display_short" : "$527.00",
                    "currency" : "USD"
                },
                "last_all" : {
                    "value" : "527.00000",
                    "value_int" : "52700000",
                    "display" : "$527.00",
                    "display_short" : "$527.00",
                    "currency" : "USD"
                },
                "last" : {
                    "value" : "527.00000",
                    "value_int" : "52700000",
                    "display" : "$527.00",
                    "display_short" : "$527.00",
                    "currency" : "USD"
                },
                "buy" : {
                    "value" : "525.50002",
                    "value_int" : "52550002",
                    "display" : "$525.50",
                    "display_short" : "$525.50",
                    "currency" : "USD"
                },
                "sell" : {
                    "value" : "526.99999",
                    "value_int" : "52699999",
                    "display" : "$527.00",
                    "display_short" : "$527.00",
                    "currency" : "USD"
                },
                "item" : "BTC",
                "now" : "1392201806575324"
            }
        ]
    }
    

    当我尝试使用以上两个选项之一反序列化后一个字符串时,我得到了这个

    JsonObject d3 = JsonObject.Parse(d1["data"]);
    
    Count = 5
        [0]: {[high:{value:600.00000, value_int:60000000]}
        [1]: {[display:$600.00, display_short:$600.00]}
        [2]: {[currency:USD}, low:{value:515.00000]}
        [3]: {[value_int:51500000, display:$515.00]}
        [4]: {[display_short:$515.00, currency:USD]}
    

    这远非事实。根据我的说法,这个结果是错误的,甚至不是json可解析的。 => {[货币:美元},低:{值:515.00000]}

    MS Javascript序列化器工作正常。

    那么我做错了什么?

    由于

1 个答案:

答案 0 :(得分:1)

如何反序列化到具体的类。

var ticker = ServiceStack.Text.JsonSerializer
                         .DeserializeFromString<Ticker.RootObject>(json);

public class Ticker
{
    public class Value
    {
        public string value { get; set; }
        public string value_int { get; set; }
        public string display { get; set; }
        public string display_short { get; set; }
        public string currency { get; set; }
    }

    public class Data
    {
        public Value high { get; set; }
        public Value low { get; set; }
        public Value avg { get; set; }
        public Value vwap { get; set; }
        public Value vol { get; set; }
        public Value last_local { get; set; }
        public Value last_orig { get; set; }
        public Value last_all { get; set; }
        public Value last { get; set; }
        public Value buy { get; set; }
        public Value sell { get; set; }
        public string item { get; set; }
        public string now { get; set; }
    }

    public class RootObject
    {
        public string result { get; set; }
        public Data data { get; set; }
    }
}
相关问题