0

「JNJ」「ADP」の株式情報をリクエストした際に返されるデータです。

var quote = new Object(); 
    quote['JNJ'] = {
    Ticker: 'JNJ', 
    Valoren: 943981, 
    ExchangeCode: 321, 
    Exchange: 'NY', 
    ExchangeName: 'New York Stock Exchange', 
    ExchangeShortName: 'NYSE', 
    TradeTime: 1375906505,
    Volume: 9052146, 
    Last: 93.66, 
    Open: 93.60, 
    High: 94.03, 
    Low: 93.47,
    PrevClose: 93.81, 
    Change: -0.15, 
    ChangePercent: -0.1599, 
    Bid: 93.66,
    Ask: 93.68, 
    BidSize: 2500, 
    AskSize: 800, 
    Name: 'Johnson & Johnson',
    ShortName: 'Johnson', 
    ISIN: 'US4781601046', 
    SharesOutstanding: 2818073863
}; 
quote['ADP'] = {
    Ticker: 'ADP', 
    Valoren: 910042,
    ExchangeCode: 537, 
    Exchange: 'NQ', 
    ExchangeName: 'Nasdaq Stock Market', 
    ExchangeShortName: 'Nasdaq', 
    TradeTime: 1375905600, 
    Volume: 1460941, 
    Last: 71.99, 
    Open: 72.11, 
    High: 72.28, 
    Low: 71.67, 
    PrevClose: 72.24, 
    Change: -0.25, 
    ChangePercent: -0.3461, 
    Bid: 71.99, 
    Ask: 72.00, 
    BidSize: 9300, 
    AskSize: 300, 
    Name: 'Automatic Data Processing',
    ShortName: 'Automatic Data', 
    ISIN: 'US0530151036', 
    SharesOutstanding: 485222417
}; 
eval('updateQuotes(quote)');

私はこれで初心者です。json.net を試しましたが、引き続きエラーが発生します。適切なjsonではないようです。「{」の前と「}」の後のすべてを削除するとうまくいくかもしれないと思いましたが、今のところうまくいきません。どんな助けやアイデアも大歓迎です。

編集:単一の株に制限し、「{」の前と「}」の後のすべてを取り除くことで、次を使用して問題なく解析できます。

string input = json;
var jss = new JavaScriptSerializer();
Dictionary<string, string> sData = jss.Deserialize<Dictionary<string, string>>(json);
string _Ticker = sData["Ticker"].ToString();
string _Last = sData["Last"].ToString();
Console.WriteLine(_Ticker + "  " + _Last);
4

1 に答える 1

1

最後のeval('updateQuotes(quote)')を削除してみてください。また、デシリアライズ先のオブジェクトがこの形式であることを確認してください

public class RootObject
{

public string Ticker { get; set; }
public int Valoren { get; set; }
public int ExchangeCode { get; set; }
public string Exchange { get; set; }
public string ExchangeName { get; set; }
public string ExchangeShortName { get; set; }
public int TradeTime { get; set; }
public int Volume { get; set; }
public double Last { get; set; }
public double Open { get; set; }
public double High { get; set; }
public double Low { get; set; }
public double PrevClose { get; set; }
public double Change { get; set; }
public double ChangePercent { get; set; }
public double Bid { get; set; }
public double Ask { get; set; }
public int BidSize { get; set; }
public int AskSize { get; set; }
public string Name { get; set; }
public string ShortName { get; set; }
public string ISIN { get; set; }
public int SharesOutstanding { get; set; }
}

このhttp://json2csharp.com/を使用して、JSON 文字列を C# オブジェクトに検証できます。

于 2013-08-07T21:41:54.080 に答える