<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Неофициальный форум DLNA Home Media Server &mdash; TJson]]></title>
	<link rel="self" href="https://hms.lostcut.net/extern.php?action=feed&amp;tid=304&amp;type=atom" />
	<updated>2017-01-04T19:28:35Z</updated>
	<generator>PunBB</generator>
	<id>https://hms.lostcut.net/viewtopic.php?id=304</id>
		<entry>
			<title type="html"><![CDATA[Re: TJson]]></title>
			<link rel="alternate" href="https://hms.lostcut.net/viewtopic.php?pid=7110#p7110" />
			<content type="html"><![CDATA[<p>Есть два класса: TJsonObject и TJsonArray. Первый - общий, для работы с JSON как с объектом, второй для работы как с массивом.<br />У TJsonObject есть свойство Count, которое отвечает за количество свойств в объекте.<br />У TJsonArray - свойство Length.</p><p>У любого класса можно посмотреть в справочнике функций в редакторе все их методы и свойства, которые у них есть.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Пример на C++Script</div><div class="fancy_spoiler"><div class="wh_markdown"><div class="markdown-body"><pre><code class="language-hmscpp">{
  int nCount, nAge; string sData, sName; TJsonObject JSON; TJsonArray JSONARRAY;
  
  sData = '{ "name": "Вася", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
  
  JSON = TJsonObject.Create();
  try {
    JSON.LoadFromString(sData);
    sName     = JSON.S["name"   ];
    nAge      = JSON.I["age"    ];
    JSONARRAY = JSON.A["friends"];
    nCount    = JSONARRAY.Length;
    
  
  } finally { JSON.Free(); }
  
  ShowMessage(Format("Имя: %s, Возраст: %d, Количество друзей: %d", [sName, nAge, nCount]));
 
}
</code></pre>
</div></div></div></div><p>А вообще, я так привык к подсказкам при наборе объектов, где вываливается список доступных свойств или методов у объекта, что теперь и не могу жить без <a href="https://hms.lostcut.net/viewtopic.php?id=131">аддона</a>, специально для этого сделанного. Там становится всё ещё проще. После набора точки будет показано окно с доступными функциями и их описанием. Намного подробней, чем во встроенном справочнике.</p><p>Методы S, I, B... у этих объектов - это просто вспомогательные функции, которые возвращают значение в нужном типе (конвертация в string, integer, boolean и проч.)</p><p>P.S.:<br /></p><div class="quotebox"><cite>slim8020 пишет:</cite><blockquote><p>И можно ли к элементам массива обращаться через [1], например?</p></blockquote></div><p>Да, можно. Начиная с нуля.<br />Кстати, можно даже обращаться к элементам массива через строку по именам свойств и номеру, разделённых слешем.<br />Например:<br />JSON.S[&quot;friends\\0&quot;] (двойной слеш, если это C++Script, если PascalScript - одинарный слеш).</p>]]></content>
			<author>
				<name><![CDATA[WendyH]]></name>
				<uri>https://hms.lostcut.net/profile.php?id=2</uri>
			</author>
			<updated>2017-01-04T19:28:35Z</updated>
			<id>https://hms.lostcut.net/viewtopic.php?pid=7110#p7110</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[TJson]]></title>
			<link rel="alternate" href="https://hms.lostcut.net/viewtopic.php?pid=7106#p7106" />
			<content type="html"><![CDATA[<p>Есть вопрос, как обращаться с обектом TJson?<br />Т.е. если это массив, есть ли аналог .length? И можно ли к элементам массива обращаться через [1], например?</p>]]></content>
			<author>
				<name><![CDATA[slim8020]]></name>
				<uri>https://hms.lostcut.net/profile.php?id=101</uri>
			</author>
			<updated>2017-01-04T16:36:01Z</updated>
			<id>https://hms.lostcut.net/viewtopic.php?pid=7106#p7106</id>
		</entry>
</feed>
