<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=SaveJSONToString</id>
	<title>SaveJSONToString - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=SaveJSONToString"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=SaveJSONToString&amp;action=history"/>
	<updated>2026-04-04T12:50:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=SaveJSONToString&amp;diff=4370&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=SaveJSONToString&amp;diff=4370&amp;oldid=prev"/>
		<updated>2022-07-17T11:22:44Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 11:22, 17 July 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=SaveJSONToString&amp;diff=4369&amp;oldid=prev</id>
		<title>1&gt;Admin at 07:29, 17 July 2022</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=SaveJSONToString&amp;diff=4369&amp;oldid=prev"/>
		<updated>2022-07-17T07:29:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=SaveJSONToString&lt;br /&gt;
|caption=Функции работы со строками&lt;br /&gt;
|type=1&lt;br /&gt;
|status=1&lt;br /&gt;
|db=0&lt;br /&gt;
|exception=Неверный входящий объект&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Строковые функции]]}}&lt;br /&gt;
Функция экспортирует (превращает) объект дерева, ветки или списка в текст JSON. Функция позволяет восстановить JSON документ из объекта, который обмено создается с помощью функции [[LoadJSONFromString]]. Обычно необходимо модифицировать объект перед превращением его в текст, при модификации (удалении или добавлении веток или списков) нужно руководствоваться следующими правилами, чтобы получить корректный конечный результат:&lt;br /&gt;
* При экспорте дерева к строке-результату будут добавлены символы '''{''' и '''}'''. При экспорте списка они будут добавлены, если результат уже не является массивом. При экспорте ветки дерева результат не будет модифицирован.&lt;br /&gt;
* И для дерева и для списка при экпорте используется поле ''Check'' ([[Tree.Checked]], [[List.Check]]). Это поле может иметь следующие значения:&lt;br /&gt;
** Для веток, содержащих подчиненные ветки или для элементов списков, значением которых является список, в случае, если это поле равно '''0''', будут включенные элементы будут считаться объектом JSON ('''{''' и '''}'''), если поле равно единице, они будут считаться массивом ('''[''' и ''']'''). Это позволяет корректно отличить пустой объект ''{}'' от пустого массива ''[]''.&lt;br /&gt;
** Для остальных веток поле ''Check'' ([[Tree.Checked]], [[List.Check]]) используется для указания типа объекта, если объект является строкой. Если поле равно нулю, экспортируемое строковое значение будет заключено в кавычки и перекодировано в формат JSON (см. [[EncodeString]]), т.е. &amp;lt;code&amp;gt;&amp;quot;Имя&amp;quot;:&amp;quot;&amp;lt;Перекодированное значение&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;. Если поле не равно нулю, перекодирование и кавычки добавлены не будут, т.е. &amp;lt;code&amp;gt;&amp;quot;Имя&amp;quot;:&amp;lt;Значение&amp;gt;&amp;lt;/code&amp;gt;. Данная возможность используется для корректного сохранения особых значений типа ''true'', ''false'' и ''null''.&lt;br /&gt;
* Поле ''Check'' для строковых значений также можно использовать для быстрой вставки в объект массива или объекта JSON, заданного в виде строки. Так как в случае ''Check&amp;lt;&amp;gt;0'' перекодирование производиться не будет, результат будет выглядеть, как корректный объект или массив JSON без необходимости его предварительного превращения в ветки дерева или списки (см. пример ниже).&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
'''SaveJSONToString'''(''&amp;lt;Объект дерева, ветки или списка (STRING)&amp;gt;''):''&amp;lt;Результат (STRING)&amp;gt;''&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
Будет возвращено строковое значение.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//&amp;quot;Отпечаток&amp;quot; сертификата (здесь дан для примера) &lt;br /&gt;
пОтпечаток:=&amp;quot;ABC123&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Загрузка простого объекта JSON&lt;br /&gt;
Стр:=&amp;quot;{&amp;quot;&amp;quot;Результат&amp;quot;&amp;quot;:{&amp;quot;&amp;quot;Вложения&amp;quot;&amp;quot;:[{&amp;quot;&amp;quot;Файл&amp;quot;&amp;quot;:{&amp;quot;&amp;quot;Имя&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Файл1&amp;quot;&amp;quot;,&amp;quot;&amp;quot;Тип&amp;quot;&amp;quot;:0},&amp;quot;&amp;quot;Удален&amp;quot;&amp;quot;:0},{&amp;quot;&amp;quot;Файл&amp;quot;&amp;quot;:{&amp;quot;&amp;quot;Имя&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Файл2&amp;quot;&amp;quot;,&amp;quot;&amp;quot;Тип&amp;quot;&amp;quot;:1},&amp;quot;&amp;quot;Удален&amp;quot;&amp;quot;:1},{&amp;quot;&amp;quot;Файл&amp;quot;&amp;quot;:{&amp;quot;&amp;quot;Имя&amp;quot;&amp;quot;:&amp;quot;&amp;quot;Файл3&amp;quot;&amp;quot;,&amp;quot;&amp;quot;Тип&amp;quot;&amp;quot;:2},&amp;quot;&amp;quot;Удален&amp;quot;&amp;quot;:0}]}}&amp;quot;;&lt;br /&gt;
aTree:=LoadJSONFromString(Стр,0);&lt;br /&gt;
aBr:=aTree[&amp;quot;Результат&amp;quot;,&amp;quot;Вложения&amp;quot;];&lt;br /&gt;
If _And(TypeStr(aBr)=&amp;quot;TREE.BRANCH&amp;quot;,aBr.Size()&amp;gt;0) Then&lt;br /&gt;
  For i:=1 to aBr.Size() Do&lt;br /&gt;
    //Получим ветку текущего вложения по его индексу&lt;br /&gt;
    aBr2:=aBr.ByIndex(i);&lt;br /&gt;
    //Удалим ветку файл в текущем вложении&lt;br /&gt;
    aBr3:=aBr2.FindByName(&amp;quot;Файл&amp;quot;);&lt;br /&gt;
    If not IsEmpty(aBr3) Then&lt;br /&gt;
      aBr2.Remove(aBr3.Index);&lt;br /&gt;
    EndIf;&lt;br /&gt;
&lt;br /&gt;
    //Добавим ветку подпись, как массив, добавим объект сертификат в первый элемент массива&lt;br /&gt;
    aBr3:=aBr2.Add(,&amp;quot;Подпись&amp;quot;);&lt;br /&gt;
    //Указание на то, что это массив объектов (здесь не обязательно)&lt;br /&gt;
    aBr3.Checked:=1;&lt;br /&gt;
    //Добавим новую ветку в массив&lt;br /&gt;
    aBr3:=aBr3.Add();&lt;br /&gt;
    //Добавим заранее подготовленный кусок JSON&lt;br /&gt;
    aBr4:=aBr3.Add(&amp;quot;{&amp;quot;&amp;quot;Отпечаток&amp;quot;&amp;quot;:&amp;quot;&amp;quot;&amp;quot;+EncodeString(пОтпечаток,&amp;quot;JSON&amp;quot;)+&amp;quot;&amp;quot;&amp;quot;}&amp;quot;,&amp;quot;Cертификат&amp;quot;);&lt;br /&gt;
    //Указание на то, что текст нельзя перекодировать, а необходимо использовать &amp;quot;как есть&amp;quot;&lt;br /&gt;
    aBr4.Checked:=1;&lt;br /&gt;
  EndDo;&lt;br /&gt;
EndIf;&lt;br /&gt;
&lt;br /&gt;
Стр:=SaveJSONToString(aTree);&lt;br /&gt;
//Будет выведено: {&amp;quot;Результат&amp;quot;:{&amp;quot;Вложения&amp;quot;:[{&amp;quot;Удален&amp;quot;:0,&amp;quot;Подпись&amp;quot;:[{&amp;quot;Cертификат&amp;quot;:{&amp;quot;Отпечаток&amp;quot;:&amp;quot;ABC123&amp;quot;}}]},&lt;br /&gt;
//                {&amp;quot;Удален&amp;quot;:1,&amp;quot;Подпись&amp;quot;:[{&amp;quot;Cертификат&amp;quot;:{&amp;quot;Отпечаток&amp;quot;:&amp;quot;ABC123&amp;quot;}}]},{&amp;quot;Удален&amp;quot;:0,&amp;quot;Подпись&amp;quot;:[{&amp;quot;Cертификат&amp;quot;:{&amp;quot;Отпечаток&amp;quot;:&amp;quot;ABC123&amp;quot;}}]}]}}&lt;br /&gt;
Message(Стр);&lt;br /&gt;
//Мы смогли не только удалить нужные ветки, но и добавить целые куски текста JSON без необходимости в более трудоемком добавлении веток.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
</feed>