JSONレスポンスを送信するサービスがあります。次のようにコントローラのメソッドはなりますJSONレスポンスを解析できません
string varStr = "{proper JSON here}";
public string GetListofResourcesInSubscription(string subscriptionId)
{
// Uncomment any option below to test. The error persists either way.
//return varStr; --- Option 1
return JsonConvert.SerializeObject(JObject.Parse(varStr)); // Option 2
}
応答を取得する方法は、次のようなものです:上記のコントローラメソッドで選択されたreturn文の
response = outgoingRequest.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
responseStream = response.GetResponseStream();
using (var reader = new StreamReader(responseStream))
{
string strResp = reader.ReadToEnd();
JObject joResponse = JObject.Parse(strResp); // throws error
JArray objArray = (JArray)joResponse["value"];
// other processing
}
}
にかかわらず、応答パーサは常に投げていますレスポンスの解析中にエラーが発生しました。
次のように解析行を変更すると、問題は解決しますが、その理由はわかりません。
JObject joResponse = JObject.Parse(JsonConvert.DeserializeObject<string>(strResp));
また、ASP.NET Web APIコントローラからJSON応答を送信する正しい方法がわかりたいと思います。モデルを作成するのではなく、直接返すJSON文字列があるので、レスポンスを作成するためのモデルを使用したくありません。
アップデート1: エラーは以下の通りです:
"Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 6546."} System.Exception {Newtonsoft.Json.JsonReaderException}
エラーは何ですか? – Tim
行1、位置6546はヒントかもしれません。例外を引き起こすjsonを提供するのはどうですか? – Jocke