Перейти к содержанию
  • 0
Axbor

Показывает символов которое не должно показывать.

Вопросы

TJSONObject *o = dynamic_cast<TJSONObject*>
		(TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(s), 0));
	if (!o)
		return;

	TJSONArray *a = dynamic_cast<TJSONArray*>(o->Get("M")->JsonValue);
	if (!a)
		return;

	for (int i = 0; i < a->Count; i++) {
		TJSONObject *b = dynamic_cast<TJSONObject*>(a->Get(i));
		if (!
			return;
		Jokes[i + CurrPos].Caption = b->Pairs[0]->JsonValue->ToString();
		Jokes[i + CurrPos].Content = b->Pairs[1]->JsonValue->ToString();
		Count++;
	}
	delete L;
	L = 0; 

"s" это текст которая хранит JSON внутри значений которого есть символ " (кавычка). В JONS е уже добавлены BackSlash перед такими символами. При парсинге JOSN опят добавляются BackSlash перед спец символами. Как от этого избежать?

Отредактировал Axbor

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

  • 0

откуда получаете JSON?

банально можно replace сделать, до того как вогнать в ParseJSON

на delphi это так

s := StringReplace('\"', '"', s, []);

Поделиться сообщением


Ссылка на сообщение
  • 0

 

 

откуда получаете JSON?

банально можно replace сделать, до того как вогнать в ParseJSON

на delphi это так

s := StringReplace('\"', '"', s, []);

JSON получаю от своего сервера. Туда написано вот такой код:

<?php
	$result = $conn->query($sql);
	$rows = array(); 
	while($r = $result->fetch_assoc()){ 
	    $rows[] = $r;
	}
	print json_encode($rows);
?>

Оттуда получаю вот такой JSON:

[
{
"Caption":"Jinnixona",
"Content":"Jinnixonaning boshlig'i birorta jinni tuzalganmi-yo'qmi, tekshirish \r\nuchun ularni kinoteatrga olib boribdi. O'tiradigan stullarning hammasini\r\n bo'yatib qo'yibdi. Kim o'tirmasa o'sha tuzalgan bo'ladi deb o'ylabdi. \r\nJinnilarni hammasi o'tiribdi, lekin bittasi stulga gazeta solib keyin \r\no'tiribdi. Doktor uni tuzalganmi deb o'ylab savol beribdi: \r\n---- Sen nega gazeta solding, biror narsa sezdingmi? desa jinni: \r\n---- \"Men hammadan balandroqda o'tirmoqchi edim ,bo'yim pastroq\" debdi..."
}
]

Я и так сделал но думаю что есть другой более адекватный способ. При парсинге  \n, \r эти символы не преобразуется на \\n или \\r как я заметил. Они очень хорошо выполняют свою функцию

Отредактировал Axbor

Поделиться сообщением


Ссылка на сообщение
  • 0

я пока так оставил, другого выхода не нашел, константы не помогли.

 

вот так у меня

$answer =  '{"root":'.json_encode($rows, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES).'}';
echo str_replace("\\\"","'", $answer);
Отредактировал ZuBy

Поделиться сообщением


Ссылка на сообщение
  • 0

я пока так оставил, другого выхода не нашел, константы не помогли.

 

вот так у меня

$answer =  '{"root":'.json_encode($rows, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES).'}';
echo str_replace("\\\"","'", $answer);
хорошая идея. Сделать replace на сервере..

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От rareMax
      Нужно сериализовать объект. Проблема в том, что бы поля, значения которых nil - нужно вообще исключить из итогового JSON. Использую System.Json.Serializers. Пробовал сделать это через свой IJsonContractResolver - но там я не смог проверить значение. Знаю что можно свой конвертер для каждого типа написать - но это довольно объемная работа получится. Есть ли у вас варианты, как можно решить мой вопрос?
      JSON-Serialize-Experiments/IgnoreIfNil.dpr at main · ms301/JSON-Serialize-Experiments (github.com)
    • От rareMax
      Как убрать поле класса из сериализации через Rest.Json?
      Вот как я пробую избавиться от поля Foo:
      program Project1; {$APPTYPE CONSOLE} {$R *.res} uses REST.Json, System.JSON.Serializers, System.SysUtils; type TFoo = class private FValue1: Integer; public Value2: Integer; property Value3: Integer read FValue1 write FValue1; end; [JsonSerialize(TJsonMemberSerialization.&Public)] TBar = class private FValue1: Integer; FFoo: TFoo; public Value2: Integer; property Value3: Integer read FValue1 write FValue1; // property Foo: TFoo read FFoo write FFoo; end; procedure Test; var LBar: TBar; begin LBar := TBar.Create; try Writeln(TJson.ObjectToJsonString(LBar)); finally LBar.Free; end; end; begin try { TODO -oUser -cConsole Main : Insert code here } Test; Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. Но на выходе все равно есть поле Foo.
       
    • От ENERGY
      Друзья, нашел тут интересную статью, где тестируются разные jSON парсеры.
       
      Ссылка: http://www.webdelphi.ru/2016/10/ishhem-samyj-bystryj-parser-json-v-delphi/
      Автор: Владислав Баженов
      Описание (26/10/2016):
       
    • От unicorn
      Всем привет. 
      Мне нужно отправить запрос к серверу в формате JSON-RPC. Вопрос - как в него запихнуть json-данные правильно?
    • От Просто Проги
      Пытаюсь получить список друзей из вк получаю их по api записываю в memo.text ответ от get запроса,после пытаюсь получить из json поля
      ответ выглядит так
      { "response": { "count": 104, "items": [ { "id": 1308603, "first_name": "Виктория", "last_name": "Талина", "photo": "http://cs625517.vk.me/v625517603/4e79b/E9Q1WA5SSLiI.jpg", "photo_100": "http://cs625517.vk.me/v625517603/4e79a/15QwerpQbCKk.jpg", "photo_400_orig": "http://cs625517.vk.me/v625517603/4e7199/wxOJQyZhqq8.jpg", "online": 0 }, { "id": 282070, "first_name": "Никита", "last_name": "Багров", "photo": "http://cs630623.vk.me/v630623070/4b610/RXNNdJ6_Nik.jpg", "photo_100": "http://cs630623.vk.me/v630623070/4b60f/MDXpi0deY1A.jpg", "photo_400_orig": "http://cs630623.vk.me/v630623070/4b60e/ec7A3pBDJZ0.jpg", "online": 0 }, "first_name": "Имя ", Следующим кодом
       
      var JSON: TJSONObject; JSONArray: TJSONArray; i: Integer; begin JSON := TJSONObject.ParseJSONValue(Form2.Memo2.Lines.Text) as TJSONObject; сюда получается я заношу весь код Form2.Memo2.Lines.Clear; JSONArray := TJSONArray(JSON.Get('items').JsonValue); далее изу по массиву итмемов for i := 0 to JSONArray.Size - 1 do begin Form2.Memo2.Lines.Add(TJSONPair(TJSONObject(JSONArray.Get(i)).Get('first_name')).JsonValue.Value); пытаюсь добавить найденное поле end; но летят ошибка критичная (
    • От rareMax
      Я работаю с библиотекой XSuperObject. Как правило, сам JSON я не парсю, а только создаю классы-прототипы данных в JSON, и пользуюсь методами .FromJSON и .ToJSON.
      пример:
      Для такого JSON'a 
      создаю такой класс:
      TvktStatus = Class private Ftext: String; FAudio: TvktAudio; published [Alias('text')] property text: String read Ftext write Ftext; [Alias('audio')] property audio: TvktAudio read FAudio write FAudio; End; в итоге не нужно парсить программисту - все делает библиотечка. 
      Теперь к самой проблеме.
      Допустим есть такой файлик с данными в формате JSON:
      Как бы вы составили такой класс-прототип? Ведь тут получается в одном массиве есть как число так и строка.
    • От rareMax
      Поддерживает ли стандартная библиотека маршалинг/демаршалинг классов? Сейчас работаю с XSuperObject - работа очень приятная с ним. Но огорчает то, что тащит за собой тяжелые библиотеки(Инди, БД). Если нет - может кто знает альтернативы полегче? В идеале будет если так же будут Marshalling Attributes
    • От M1shQa
      Получаю с сервера большой JSON, в нем есть поле number. Как получить список в memo состоящий только из номеров? Подскажите пожалуйста..
       
    • От Dion
      Добрый день, Господа.
      Давайте меняться. 
      Предлагаю вам откуда-то взятый мною superobject, версии 1.2 из которой я выкинул разный хлам, допилил и сделал так, чтобы он собирался под Android, OS X и iOS. Протестировал.
      Дальше я написал вокруг него километр кода, создал набор стилей и сделал динамическую загрузку стилей для списка. В список в соответствии со стилями можно добавить порядка 20 разных компонентов.
      Идея моя была такой.
      Есть сервер, на него с клиента загружаются стили и дальше они разливаются от сервера к серверу и в конечном счете попадают на клиентов. Грубо говоря, должен получиться тонкий клиент.
      Надо кому? 
    • От Syb
      Я могу совсем что то не правильно делать, хочу получить данные согласно API :
       
       
      http://glonasssoft.ru/wiki/?wiki_name=API
      var jValue:TJSONValue; s,s1:string; begin RestClient1.BaseURL:='http://dev.glonasssoft.ru/auth/login'; Restrequest1.Execute; jValue:=RESTResponse1.JSONValue; s:=jValue.ToString; s1:= copy(s,pos('AuthID:"',s)+11,pos('","U',s)-pos('AuthID:"',s)-11);//достал ключ RestClient2.BaseURL:='http://dev.glonasssoft.ru/vehicles_'; Restrequest2.Params[0].Value:=s1; -здесь параметр типа HttpHeader задан X-Auth в него сую ключ Restrequest2.Execute; - говорит не авторезирован jValue:=RESTResponse2.JSONValue; s:=jValue.ToString; что я не так делаю?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...