Jyoti panigrahi Ответов: 1

Как я могу получить данные в формате JSON с помощью newtonsoft.в JSON


Ниже приведен код для моего веб - сервиса

[WebMethod]
общественного недействительными GetCountries()
{
пробовать
{
Страна страна = новая страна();
using (SqlCommand cmd = new SqlCommand("SELECT country_id, country_name FROM [dbo].[mastertblcountry]", подключение))
{
соединять.Открыть();
SqlDataReader rdr = cmd.Метода executereader();
а (ор.Читать())
{
country.countryid = конвертировать.ToInt32(rdr["country_id"]);
страны.countryname = ор["country_name"].Метод toString();
Контексте.Ответ.Write(JsonConvert.SerializeObject(страна, форматирование.Изрезанный));
}
}
}

Ожидаемый формат json от сервиса

[{"countryid": 1,
"countryname" : "Индия"},
{"countryid": 2,
"countryname" : "США"}]


Фактический формат
Ошибка: Ошибка синтаксического анализа в строке 4:
...ntryname": "INDIA"}{ "countryid": 2,
----------------------^
Ожидая 'EOF', '}', ',', ']'

Что я уже пробовал:

Я установил NewtonSoft из диспетчера пакетов Nuget.
Context.Response.Write(JsonConvert.SerializeObject(country, Formatting.Indented));


где страна-это объект, содержащий идентификатор и название страны. У меня есть файл Country.cs, который имеет следующий код.

{
       public int countryid { get; set; }
       public string countryname { get; set; }
   }

Richard MacCutchan

Пожалуйста, отредактируйте свой вопрос и покажите точный текст полученной строки JSON.

F-ES Sitecore

Google "webmethod return json", вы не делаете это правильно, не используйте ответ.Писать

https://stackoverflow.com/questions/42647540/return-json-object-from-asp-net-webmethod-to-ajax-call/42649928

1 Ответов

Рейтинг:
2

MadMyche

Хотя он не работает так, как вы хотите, он делает именно то, что вы запрограммировали его.
Вы
Вы определяете экземпляр Countrycountry объект и непосредственно записать этот экземпляр в поток ответов.

Country country = new Country();
// omitted lines
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read()) {
	country.countryid = Convert.ToInt32(rdr["country_id"]);
	country.countryname = rdr["country_name"].ToString();
	Context.Response.Write(JsonConvert.SerializeObject(country, Formatting.Indented));
}
Что я тебе верю хотеть сделать это значит вернуть а List из стран, поэтому то, что вы должны сделать, это построить этот список, и после того, как вы закончите итерацию через ваш SQL Reader, вы вернете его все сразу
Country country = null;
List<Country> CountryList = null;

SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows) {
	CountryList = new List<Country>();
	while (rdr.Read()) {
		CountryList.Add(new Country({
			countryid = Convert.ToInt32(rdr["country_id"]),
			countryname = rdr["country_name"].ToString()
		});
	}
}
Context.Response.Write(JsonConvert.SerializeObject(CountryList, Formatting.Indented));

Тем не менее, существуют определенные методы/действия, которые являются частью ASP.NET которые предназначены для возврата JSON. Возможно, вы захотите покопаться в WebAPI, а также в JsonResult класс action