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 웹 api2 컨트롤러에서 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