2017-10-07 4 views
0

안녕하세요 저는 텍스트 파일에서 json 데이터를 읽으려고하고 있지만 작동하지 않습니다. 웹 사이트에서 데이터를 가져 오려고하면 정상적으로 작동합니다. 누구든지이 문제를 해결할 수있는 해결책을 알고 있습니까? 사전에 감사합니다. 파일에서 Json 데이터 읽기

  private void Form1_Load(object sender, EventArgs e) 
     { 
      string path = @"C:\Users\spacefrog\Documents\Visual Studio 2017\Projects\json_test_solution\json_test\bin\Debug\test.json"; 

      // Stream stream = File.OpenRead(path); 
      WebClient client = new WebClient(); 
      Stream stream = client.OpenRead("https://www.cryptocompare.com/api/data/coinlist/"); // works perfect 
      /* 
      Stream stream = client.OpenRead(path); // doesn't work 
      Stream stream = File.OpenRead(path); // doesn't work 
      */ 

/* File Data content (same as website) 
{ 
"Response": "Success", 
"Message": "Coin list succesfully returned!", 
"BaseImageUrl": "https://www.cryptocompare.com", 
"BaseLinkUrl": "https://www.cryptocompare.com", 
"Data": { 
"LTC": { 
"Id": "3808", 
"Url": "/coins/ltc/overview", 
"ImageUrl": "/media/19782/ltc.png", 
"Name": "LTC", 
"CoinName": "Litecoin", 
"FullName": "Litecoin (LTC)", 
"Algorithm": "Scrypt", 
"ProofType": "PoW", 
"SortOrder": "2" 
} 
... 
}, 
"Type": 100 
} 
    */ 

StreamReader reader = new StreamReader(stream); 
JObject json = JObject.Parse(reader.ReadLine()); 
stream.Close(); 



MessageBox.Show((string)json["Response"]); 

} 
+0

무슨 에러가 발생합니까에게 가고 싶어? '그다지 효과가 없다 '는 것은 그다지 설명 적이 지 않다. –

답변

1
JObject json = JObject.Parse(reader.ReadLine()); 

어떻게 JSON.NET 파서는 첫 번째 줄을 구문 분석해야합니까? 귀하의 의견을 보면, 첫 번째 줄은

{ 

으로 보입니다. 유효하지 않은 JSON 개체로 보입니다. ReadToEnd 메서드를 살펴보십시오. 그런데 사용 범위 내에서 StreamReader를 사용하려고 할 수 있습니다.

0

당신은 당신이 정말로 파일로 저장할 경우

webClient.DownloadFile(url,filename); 

를 사용하거나 쓸 수

WebClient webClient = new WebClient(); 
var json = webClient.DownloadString("https://www.cryptocompare.com/api/data/coinlist/"); 

var rootObj = JsonConvert.DeserializeObject<SOTest.RootObject>(json); 
//OR var jObj = JObject.Parse(json); 

그 JSON을 구문 분석 임시 파일을 사용할 필요가 없습니다 위의 json 위의 파일

File.WriteAllText(filename, json); 

또는 i F 당신은 client.OpenRead 방법

var f = File.Create(filename); 
stream.CopyTo(f); 

public class SOTest 
{ 
    public class DataItem 
    { 
     public string Id { get; set; } 
     public string Url { get; set; } 
     public string ImageUrl { get; set; } 
     public string Name { get; set; } 
     public string Symbol { get; set; } 
     public string CoinName { get; set; } 
     public string FullName { get; set; } 
     public string Algorithm { get; set; } 
     public string ProofType { get; set; } 
     public string FullyPremined { get; set; } 
     public string TotalCoinSupply { get; set; } 
     public string PreMinedValue { get; set; } 
     public string TotalCoinsFreeFloat { get; set; } 
     public string SortOrder { get; set; } 
    } 

    public class RootObject 
    { 
     public string Response { get; set; } 
     public string Message { get; set; } 
     public string BaseImageUrl { get; set; } 
     public string BaseLinkUrl { get; set; } 
     public Dictionary<string,DataItem> Data { get; set; } 
     public int Type { get; set; } 
    } 
}