2017-08-02 243 views
-2

我有一個接受文件上傳的web api服務。該文件的內容是一個小的JSON字符串如下所示:從文件流中讀取內容c#

{ "name":"John", "age":31, "city":"New York" } 

如何獲得文件內容,同時它是一個流,而不必流另存爲Web服務器上的文件,然後打開文件?

以下是我的代碼片段:

byte[] fileData = null; 
using(var binaryReader = new BinaryReader(httpRequest.Files[0].InputStream)) 
{ 
     fileData = binaryReader.ReadBytes(httpRequest.Files[0].ContentLength); 
} 

我使用的是4.0 .NET框架

+1

是什麼這個問題? – NineBerry

+0

爲什麼不使用StreamReader? –

+0

問題是如何從我的流中獲取JSON。 – user1647160

回答

1

可以使用StreamReader類。試試這個代碼:

using (var reader = new StreamReader(httpRequest.Files[0].InputStream)) 
{ 
    var content = reader.ReadToEnd(); 
    var json = JObject.Parse(content); 
    var name = json["name"]; 
} 

另一種選擇是創建一個類爲您的JSON(手動或http://json2csharp.com/):

public class Person 
{ 
    public string name { get; set; } 
    public int age { get; set; } 
    public string city { get; set; } 
} 

然後你的代碼改成這樣:

using (var reader = new StreamReader(httpRequest.Files[0].InputStream)) 
{ 
    var content = reader.ReadToEnd(); 
    var person = JsonConvert.DeserializeObject<Person>(content); 
    var name = person.name; 
} 
+0

這工作!朋友,謝謝。 – user1647160