У меня есть служба, которая отправляет ответ 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
}
метод, который получает ответ, как следующее:
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));
Кроме того, я хочу знать, что это правильный способ отправки ответа JSON из контроллера ASP.NET веб API2. Я не хочу использовать модели для создания ответа, потому что у меня есть строки JSON, которые я хочу вернуть напрямую, вместо того, чтобы создавать из них модели.
Update 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