2015-11-21 51 views
1

我正在嘗試使用Steam的Web API接收JSON並使用JSON.Net解析它。我只是硬編碼的URL,我知道我會收到JSON。當我運行它時遇到以下錯誤:解析值時遇到意外字符:

解析值時遇到意外的字符:。路徑 '',線 0,位置0

錯誤指向行我控制器22:

第22行:SteamResponse響應= JsonConvert.DeserializeObject(JSON);

這裏是我的課:

public class Game 
{ 
    public int appid { get; set; } 
    public int playtime_forever { get; set; } 
    public int? playtime_2weeks { get; set; } 
} 

public class SteamResponse 
{ 
    public int game_count { get; set; } 
    public List<Game> games { get; set; } 
} 

public class RootObject 
{ 
    public SteamResponse response { get; set; } 
} 

我的控制器看起來是這樣的:

 List<Game> gameList = new List<Game>(); 

     WebClient wc = new WebClient(); 

     var json = wc.DownloadString("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + steamAPIKey + "&steamid=76561197994394917&format=json"); 

     SteamResponse response = JsonConvert.DeserializeObject<SteamResponse>(json); 

我已經參觀了瀏覽器的URL,以驗證它是正確的,而且我還測試使用JSON Lint的URL。我不確定我在這裏做錯了什麼 - 我檢查了其他主題並檢查了他們列出的問題,但沒有找到它們。

Here is a link to the JSON I'm attempting to receive

回答

2

您已創建RootObject類型,但您並未在反序列化中使用它。您是否嘗試過:

var root = JsonConvert.DeserializeObject<RootObject>(json); 
// access root.response; 
+0

感謝您的快速回復。是的,我已經嘗試過RootObject,並且遇到了同樣的錯誤。 – Jorbyte

+1

也許這是一個無效的流API密鑰,您提供的JSON鏈接正在爲我工​​作 - https://dotnetfiddle.net/2KP7HO – devdigital

+0

那麼API密鑰在JSON鏈接的URL中,所以它必須正確嗎?我甚至將你的代碼示例複製到我剛剛創建並運行的本地控制檯應用程序中 - 但得到了同樣的錯誤。我很困惑。 – Jorbyte

相關問題