28

ASP.NET Web API (テスト用) を使用して JSON ファイルを返そうとしています。

public string[] Get()
{
    string[] text = System.IO.File.ReadAllLines(@"c:\data.json");

    return text;
}

Fiddler では、これは Json 型として表示されますが、Chrome でデバッグしてオブジェクトを表示すると、個々の行の配列 (左) として表示されます。右の画像は、オブジェクトを使用しているときにオブジェクトがどのように見えるかです。

Jsonの結果を正しい形式で取得するために何を返す必要があるか教えてもらえますか?

代替

4

3 に答える 3

30

ファイルにはすでに有効な JSON が含まれていますか? その場合、呼び出す代わりに、呼び出して単一の文字列として取得File.ReadAllLinesする必要があります。File.ReadAllText次に、Web API が再シリアル化できるように、JSON として解析する必要があります。

public object Get()
{
    string allText = System.IO.File.ReadAllText(@"c:\data.json");

    object jsonObject = JsonConvert.DeserializeObject(allText);
    return jsonObject;
}

この意志:

  1. ファイルを文字列として読み取る
  2. JSON オブジェクトとして解析して CLR オブジェクトにする
  3. それを Web API に返して、JSON (または XML など) としてフォーマットできるようにします。
于 2013-03-31T03:56:35.847 に答える
23

誰かが興味を持っている場合にも機能する別の解決策を見つけました。

public HttpResponseMessage Get()
{
    var stream = new FileStream(@"c:\data.json", FileMode.Open);

    var result = Request.CreateResponse(HttpStatusCode.OK);
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    return result;
}
于 2013-03-31T04:02:27.067 に答える