Thiyagu Arockiasamy Ответов: 1

Как преобразовать необработанные данные в данные json ? .


Пример:

Выход:

необработанные данные:

{"NewsByIdResult":"[{\"NewsID\":4,\"CompanyID\":0,\"CompanyIds\":null,\"CompanyId\":160,\"CompanyIdVal\":null,\"Topic\":\"280\",\"Industry\":83,\"CompanyLegalName\":\"бизнес-информация TCS\"}]"}

Данные Json:

{
"NewsByIdResult": "[{"NewsID":4,"CompanyID":0,"CompanyIds":null,"CompanyId":160,"CompanyIdVal":null,"Topic":"280","Industry":83,"CompanyLegalName":" бизнес-информация TCS"}]"


}

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

var JsonNews = Newtonsoft. Json.JsonConvert. SerializeObject(Lstnews);
возвращение JsonNews;

Использование приведенного выше кода для преобразования списка объектов в данные Json. Но я получаю выходные необработанные данные только не так, как данные json. Kinly help i would like JSON data.

F-ES Sitecore

Разве это имеет значение? Пока это действительный json, вот что имеет значение.

Thiyagu Arockiasamy

Хорошо, тогда как можно удалить символ \ в необработанных данных. я не мог связать это значение.

F-ES Sitecore

"\"На самом деле нет, VS просто добавляет его, когда показывает вам текст, чтобы вы знали, что следующая цитата является буквальной цитатой, а не цитатой, которая обозначает начало\конец строки.

Thiyagu Arockiasamy

Хорошо, сэр, но это не работает. я реализовал данные joson с помощью HTML-страницы с помощью jquery, но это не сработало.я добавил свой HTML-код jQuery, пожалуйста, помогите, сэр

< script type= "text/javascript">
$(документ).готово(функция () {
отладчик
$.Аякс({
кроссдомен: правда,
асинхронные: правда,
кэш: false,
типа: "вам",
URL-адрес: 'http://localhost:25012/ProjectRestService.svc/NewsById/4',
сведения: в формате JSON.преобразовать в строки(),
contentType: "application/json; charset=utf-8",
тип данных: "json",
успех: функция (ответ) {
предупреждение(ответ.д);
},
отказ: функция (ответ) {
предупреждение(ответ.responseText);
}
});
}
);
< / script>

Thiyagu Arockiasamy

я получил вывод только в необработанных данных, которые мне нужны для данных joson. я использовал код

var JsonNews = Newtonsoft. Json.JsonConvert. SerializeObject(Lstnews);
возвращение JsonNews;

его только получить необработанные данные, но мне нужны данные json

{"NewsByIdResult": "[{\"NewsID\": 4,\ "CompanyID\" Blush|: O ,\"CompanyIds\":null,\"CompanyId\":160,\"CompanyIdVal\":null,\"Topic\":\"280\",\"Industry\":83,\"CompanyLegalName\":\"бизнес-информация TCS\"}]"}


Nathan Minier

Вероятно, это помогло бы, если бы массив не был определен как строка.

И если бы у компании были достоверные данные.

Thiyagu Arockiasamy

CompanyID нет необходимости, сэр

xszaboj

вы уверены, что исходные данные находятся в этом формате?
{"NewsByIdResult": "[{\"NewsID\": 4,\ "CompanyID\" Blush|: O ,\"CompanyIds\":null,\"CompanyId\":160,\"CompanyIdVal\":null,\"Topic\":\"280\",\"Industry\":83,\"CompanyLegalName\":\"бизнес-информация TCS\"}]"}

а как насчет этой улыбки? Есть ли у вас какой-либо контроль над этими данными?

Thiyagu Arockiasamy

Его не улыбка его " CompanyID\": 0, в этом ID нет необходимости

xszaboj

В таком случае единственное, что вам нужно сделать, это удалить "" вокруг. массив. "[{.....}]" быть [{ ... }], и тогда это действительный Json.
JSON. parse ('{"NewsByIdResult": [{\"NewsID\": 4,\ " CompanyID\": 0 ,\"CompanyIds\":null,\"CompanyId\":160,\"CompanyIdVal\":null,\"Topic\":\"280\",\"Industry\":83,\"CompanyLegalName\":\"TCS BUSINESS INFORMATION\"}]}')

Thiyagu Arockiasamy

Как я могу удалить "". пожалуйста, скажите мне

Thiyagu Arockiasamy

Сэр, я реализую данные joson с помощью HTML-страницы с помощью jquery, это не работает.я добавил свой HTML-код jQuery, пожалуйста, помогите мне

< script type= "text/javascript">
$(документ).готово(функция () {
отладчик
$.Аякс({
кроссдомен: правда,
асинхронные: правда,
кэш: false,
типа: "вам",
URL-адрес: 'http://localhost:25012/ProjectRestService.svc/NewsById/4',
сведения: в формате JSON.преобразовать в строки(),
contentType: "application/json; charset=utf-8",
тип данных: "json",
успех: функция (ответ) {
предупреждение(ответ.д);
},
отказ: функция (ответ) {
предупреждение(ответ.responseText);
}
});
}
);
< / script>

xszaboj

откуда вы получаете исходные данные?

Thiyagu Arockiasamy

Я получаю необработанные данные в приведенном ниже коде.

public string NewsById(string NewsID)
{
строка Status = TokenHelper.IsValidateToken();
использование (DbConnection con = db. CreateConnection())
пробовать
{
против.Открыть();
Список<новость&ГТ; Lstnews = новый список<новость&ГТ;();
DbCommand cmd = db. GetStoredProcCommand ("spNews_GetValues", NewsID);
УМК.CommandTimeout = int. MaxValue;
SqlDataReader objnewsRead = (SqlDataReader)db.Метода executereader(УМК);
пока (objnewsRead.Читать())
{
Lstnews.Добавить (Новые Известия()
{
Программа newsid = objnewsRead.GetInt32(objnewsRead.GetOrdinal("Программа")),

NewsCompId = objnewsRead.GetInt32(objnewsRead.GetOrdinal ("NewsCompId")),
CompanyId = objnewsRead.GetInt32(objnewsRead.GetOrdinal ("CompanyIds")),
CompanyLegalName = objnewsRead.Метода getString(objnewsRead.GetOrdinal ("CompanyLegalName")),


}
var JsonNews = Newtonsoft. Json.JsonConvert. SerializeObject(Lstnews);
возвращение JsonNews;

}
наконец
{
против.Закрывать();
}
}

Это мой служебный код


Пожалуйста, помогите мне

xszaboj

Итак, когда вы вызываете эту функцию, какие данные вы получите?
Я не верю, что это необработанные данные.
вы должны куда-то завернуть необработанные данные, не так ли?

xszaboj

вот моя демонстрация вашего кода.
https://github.com/xszaboj/convertToJsonDemo

поэтому, если вы запустите его, вы увидите, что он возвращает действительный json, так что проблема находится где-то еще в вашем коде

Thiyagu Arockiasamy

Уважаемый сэр, я проверяю его, у вас демонстрационный выход в порядке, это действительный Джосон. но мой вывод json таков

{"NewsByIdResult": "[{\"NewsID\": 4,\ " CompanyId\": 160,\ " NewsCompId\": 7,\ " CompanyLegalName\":\ " TCS BUSINESS INFORMATION\"}]"}

пожалуйста, как я могу удалить массив "". если я удалю " его работу нормально. пожалуйста помогите мне сэр

Thiyagu Arockiasamy

хорошо, сэр, большое спасибо.И еще один вопрос , Как получить данные json на html-странице с помощью jquery.

xszaboj

например вот так:
$. get( "test.php", { id: 1 } );
документация здесь:
https://api.jquery.com/jquery.get/

еще один вопрос к вам. Как вы размещаете свой сервис? Используете ли вы веб-API? или проект MVC? или что-то еще?

Thiyagu Arockiasamy

я использую сервис WCF rest, сэр.

Thiyagu Arockiasamy

я использую WCF rest service WEB API

Thiyagu Arockiasamy

мой сервисный код остальное

[OperationContract]
[WebGet (UriTemplate = " NewsById / {NewsID}", ResponseFormat = WebMessageFormat.В Формате JSON, Кузов = WebMessageBodyStyle.Завернутый)]
string NewsById(string NewsID);

И мой jQuery код Html страницы :

< script type= "text/javascript">
$(документ).готово(функция () {
отладчик
$.Аякс({
кроссдомен: правда,
асинхронные: правда,
кэш: false,
типа: "вам",
URL-адрес: 'http://localhost:25012/NewsRestService.svc/NewsById/4',
сведения: в формате JSON.преобразовать в строки(),
contentType: "application/json; charset=utf-8",
тип данных: "json",
успех: функция (ответ) {
предупреждение(ответ.д);
},
отказ: функция (ответ) {
предупреждение(ответ.responseText);
}
});
}
);
< / script>

Thiyagu Arockiasamy

уважаемый сэр если я десериализую этот JSON массив. "[{.....}]" отображается. как удалить "" сэр. код ниже

var JsonNews = Newtonsoft. Json.JsonConvert. SerializeObject(Lstnews);
ВАР создание экземпляра = sonConvert.DeserializeObject & lt;List & lt;newss>> (JsonNews);
возвращение JsonNews;

xszaboj

проверьте решение на github, оно работает именно так, как вам нужно

Thiyagu Arockiasamy

Большое спасибо, сэр . Для меня это прекрасно работает. Спасибо снова

Thiyagu Arockiasamy

Большое спасибо, сэр, вы действительно экономите мне много времени, сэр..... Большое вам спасибо, сэр........ Для меня это прекрасно работает, сэр.

xszaboj

Рад помочь ;)

1 Ответов

Рейтинг:
4

xszaboj

Теперь я знаю, в чем твоя проблема.
проблема в том, что вы используете:

WebGet(UriTemplate = "NewsById/{NewsID}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]


попробуйте вот так:
WebGet(UriTemplate = "NewsById/{NewsID}", ResponseFormat = WebMessageFormat.Json]


он вернет данные в этом формате:
"[{\"NewsID\": 3,\ " NewsCompId\": 2,\ " CompanyId\": 1,\ " CompanyLegalName\": \ " demo 1\"}, {\"NewsID\":97,\ " NewsCompId\": 98,\ " CompanyId\": 99,\ " CompanyLegalName\":\ " demo 2\"}]"

и вы можете легко десериализовать этот JSON с помощью:
JSON.parse("[{\"NewsID\":3,\"NewsCompId\":2,\"CompanyId\":1,\"CompanyLegalName\":\"demo 1\"},{\"NewsID\":97,\"NewsCompId\":98,\"CompanyId\":99,\"CompanyLegalName\":\"demo 2\"}]")


Но я думаю, что на самом деле ты хотел вот этого:
[OperationContract]
        [WebGet(UriTemplate = "WrappedListNewsById/{value}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
        List<Newss> GetList(string value);


Служба WCF достаточно умна, чтобы сериализовать весь список в json для вас, так что вам не нужно использовать
var JsonNews = Newtonsoft.Json.JsonConvert.SerializeObject(Lstnews);

вообще.

Посмотрите мой обновленный пример github на:
GitHub-xszaboj/convertToJsonDemo: convertToJsonDemo[^]