Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Пройтись по всем объектам json

Народ такая проблема. Допустим я получаю json строку такого типа
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
{
    {},
        {
             {},
             {
                  {},
                  {},
                  {},
             },
             {},
        },
    {}
}
потом делаю так

PHP
1
$arr = json_decode(str_replace('\n', '', $jsonData), true);
тоесть $arr у меня получается ассоциативный массив
как мне потом пройтись по всем объектам Json строки при условии, что мне зарание не известно сколько будет вложенных объектов в объекты?
Ответ:
Сообщение от Para bellum
Рекурсивно.
как то еще так..
Вопрос: Сериализация объектов JSON

Есть 4 класса(основные), и есть 4 класса, которые имеют список в котором хранятся объекты одного из основных классов.
Именно эти списки я и пытаюсь сериализовать.
Вот в чем проблема:
При десериализации JSON(в бинарной и хмл всё нормально) кидает ошибку типо непредвиденный символ.
Открыл файл и увидел что неккоректно записались данные, поэтому и ошибка.

Основной класс, с которым ошибка
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
[DataContract]
    public class Area
    {
        [DataMember]
        public string name;
        [DataMember]
        public string type;
        [DataMember]
        public string skill;
        [DataMember]
        public int complexity;
        [DataMember]
        public static int maxValueComplexity;
Другой класс, который хранит информацию об классе выше

C#
1
2
3
4
5
[DataContract]
    public class AreasOperator
    {
        [DataMember]
        public static List<Area> areas = new List<Area>();
Сама сериализация
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public interface ISerialization
    {
        void Save<T>(List<T> data, string path);
        List<T> Restore<T>(string path);
    }
 
public class JSONSerialization : ISerialization
    {
        public void Save<T>(List<T> data, string path)
        {
            DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(T[]));
            using (FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate))
            {
                jsonFormatter.WriteObject(fileStream, data.ToArray());
            }
        }
 
        public List<T> Restore<T>(string filePath)
        {
            DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(T[]));
            List<T> restoredData = new List<T>();
            using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
            {
                T[] data = (T[])jsonFormatter.ReadObject(fileStream);
                restoredData.AddRange(data);
            }
            return restoredData;
        }
    }
Реализация
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
private void Serialize(ISerialization serialization, string pathArea, string pathGuide, string pathRoute, string pathTour)
        {
            serialization.Save(AreasOperator.areas, pathArea);
            serialization.Save(GuidesOperator.guides, pathGuide);
            serialization.Save(RoutesOperator.routes, pathRoute);
            serialization.Save(TouresOperator.toures, pathTour);
        }
 
        private void Deserialize(ISerialization serialization, string pathArea, string pathGuide, string pathRoute, string pathTour)
        {
            AreasOperator.areas.Clear();
            GuidesOperator.guides.Clear();
            RoutesOperator.routes.Clear();
            TouresOperator.toures.Clear();
 
            AreasOperator.areas = serialization.Restore<Area>(pathArea);
            GuidesOperator.guides = serialization.Restore<RouteGuide>(pathGuide);
            RoutesOperator.routes = serialization.Restore<Route>(pathRoute);
            TouresOperator.toures = serialization.Restore<Tour>(pathTour);
            
            for (int i = 0; i < AreasOperator.areas.Count; i++)
            {
                areasBox.Items.Add(AreasOperator.areas[i].Name);
            }
            for (int i = 0; i < GuidesOperator.guides.Count; i++)
            {
                guidesBox.Items.Add(GuidesOperator.guides[i].FirstName);
                checkedGuidesBox.Items.Add(GuidesOperator.guides[i].FirstName);
            }
            for (int i = 0; i < RoutesOperator.routes.Count; i++)
            {
                routesBox.Items.Add(RoutesOperator.routes[i].StartPoint + " - " + RoutesOperator.routes[i].EndPoint);
            }
            for (int i = 0; i < TouresOperator.toures.Count; i++)
            {
                touresBox.Items.Add(TouresOperator.toures[i].TourName);
            }
        }
 
private void jSONSave_Click(object sender, EventArgs e)
        {
            
            JSONSerialization json = new JSONSerialization();
            string pathArea = Environment.CurrentDirectory.ToString() + @"\JSONSerialization\Areas.json";
            string pathGuide = Environment.CurrentDirectory.ToString() + @"\JSONSerialization\Guides.json";
            string pathRoute = Environment.CurrentDirectory.ToString() + @"\JSONSerialization\Routes.json";
            string pathTour = Environment.CurrentDirectory.ToString() + @"\JSONSerialization\Toures.json";
            Serialize(json, pathArea, pathGuide, pathRoute, pathTour);
        }
Ниже содержимое файла после сериализации area.json
[{"complexity":1,"name":"лррлрл","skill":"Новичок","type":"олрлрл"}]‹Р°Рї"}]

В других файлах всё нормально...

При чем иногда записывает нормально, и получается без ошибок

Обьясните в чем проблема.
Ответ: airborne-, у Вас есть 1 самая главная проблема, почему по итогу ошибка и она не из-за кодировки.
FileMode.OpenOrCreate при существовании файла открывает его и перезаписывает поверх, ничего не удаляя т.е у Вас был там json на 100 символов, а вы хотите туда записать новый на 80 у Вас в итоге выйдет файл где 80 символов от нового файла и + 20 символов от старого, и эти 20 естественно будут не давать делать десериализацию.

если присмотреться к Вашему примеру оно так и есть:
[{"complexity":1,"name":"лррлрл","skill":"Новичок","type":"олрлрл"}]‹Р°Рї"}]

Добавлено через 7 минут
p.s. если Вам нужно перезаписывать всегда поставьте обычный Create без Open, тогда будет всегда пересоздаваться новый файл.
Вопрос: Удаление дубликатов объекта JSON

Всем привет!

Нужна помощь!
Есть строка в формате JSON с неизвестным количеством объектов:
[ {"K": "Значение"}, ... ,{"K": "Значение"} ]

Нужно из этой строки удалить все объекты {}, в которых значение ключа К одинаковое, желательно в функцию передать и имя ключа.

Пример:
Строка на входе:
[ {"K":"10"},{"K":"12"},{"K":"15"},{" K":"12"},{"K":"15"} ]

На выходе должно получиться:
[ {"K":"10"},{"K":"12"},{"K":"15"} ]

Подскажите пожалуйста, как решить эту задачу на С++?
Ответ:
Цитата:
Сообщение от New man
У вас какой-то странный пример. По идее, должен был остаться только один элемент.


А так, вот вам ссыль.
Спасибо, почитаю! Почему странный? Есть массив объектов, в каждом объекте есть ключ К, и нужно из всего этого массива удалить те объекты, у которых одинаковое значение этого ключа.
Вот и получается, что на выходе имеет объекты только с разными значениями ключа К.
Вопрос: Как распарсить массив объектов Json?

Что-то ничего не получается.
У меня возвращается ответ такого формата:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
    "data": [
        {
            "id": 633,
            "email": "mail@mail.ru",
            "phone": "",
            "role": "admin",
            "online": 0,
            "offline_type": "busy",
            "first_name": "Дядя",
            "last_name": "Петя",
            "last_visit": "2018-10-20T15:07:53 UTC",
            "opened_dialogs": 0
        },
        {
            "id": 745,
            "email": "mail2@mail.ru",
            "phone": "+996555123456",
            "role": "deleted",
            "online": 0,
            "offline_type": null,
            "first_name": "Вася",
            "last_name": "Пупкин",
            "last_visit": "2016-06-13T10:35:54 UTC",
            "opened_dialogs": 0
        }
    ],
    "meta": {
        "total": 17,
        "limit": 20,
        "offset": 0
    },
    "status": "success"
}
Отсюда мне нужно получить только email и id каждого объекта. "meta" и "status" меня не интересуют.
Делал так:
C#
1
2
3
4
5
    public class OperatorsObject 
    {
        [JsonProperty("data")]
        public Operators operators { get; set; }
    }
C#
1
2
3
4
5
6
7
8
    public class Operators
    {
        [JsonProperty("id")]
        public string id { get; set; }
 
        [JsonProperty("email")]
        public string email { get; set; }
    }
C#
1
var operatorParams = JsonConvert.DeserializeObject<List<Operators>>(responseString);
Не выходит

Подскажите, как правильно это реализовать.
Ответ: Штатный класс JavaScriptSerializer прекрасно справляется:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
 
namespace Question2337453
{
    public class RootObject
    {
        public List<Operators> data { get; set; }
    }
 
    public class Operators
    {
        public string id { get; set; }
        public string email { get; set; }
    }
 
    class Program
    {
        private static RootObject json;
 
        private static string path = @"c:\temp\json2337453.txt";
 
        static void Main(string[] args)
        {
            LoadFile();
            foreach (var item in json.data)
            {
                Console.WriteLine($"ID: {item.id} e-mail: {item.email}");
            }
            Console.ReadKey();
        }
 
 
        private static void LoadFile()
        {
            var o = new JavaScriptSerializer();
 
            var str = File.ReadAllText(path, Encoding.UTF8);
            json = o.Deserialize<RootObject>(str);
        }
    }
}
Вопрос: Подскажите как вывести объект json в удобочитаемый вид

Есть ответ от сервера - объект в json'е нужно перевести в удобочитаемый вид и вывести каждый узел по отдельности, в фото подробности
Ответ: так же как любой словарь
Вопрос: Вопрос по использованию JSON-RPC на Perl (на iptvportal.ru)

Есть система (IPTV Portal), предоставляющая API в виде JSON-SQL (JSON-RPC, манипулирующий SQL-запросами).
Использую такой код:
#!/usr/bin/perl -w

use strict;
use warnings;

use JSON::RPC::Client;
use Data::Dumper;

my $api = new JSON::RPC::Client;
my $domain = 'xxx';
my $username = 'xxx';
my $password = 'xxx';
my $url = "https://admin.$domain.iptvportal.ru/api/jsonsql";

$api->version('2.0');
$api->ua()->ssl_opts(verify_hostname=>0);
$api->prepare($url, ['authorize_user','select','insert','update','delete']);

$api->id(1);
$api->authorize_user( {username=>$username, password=>$password} );

На последней строке получаю такую ошибку:
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE HTML PUBLI...") at /usr/lib/perl5/site_perl/5.14.2/JSON/RPC/Client.pm line 186.

Есть предположения, почему я получаю ошибку?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
Ответ: Такой вопрос.

В JSON-RPC можно работать в , в этом случае вместо объекта я передаю массив объектов:
[
        {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
        {"jsonrpc": "2.0", "method": "notify_hello", "params": [7]},
        {"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"},
        {"foo": "boo"},
        {"jsonrpc": "2.0", "method": "foo.get", "params": {"name": "myself"}, "id": "5"},
        {"jsonrpc": "2.0", "method": "get_data", "id": "9"} 
    ]

и получаю, соответственно, массив ответов.
Однако в JSON::RPC::Client при попытке передать массив я получаю ошибку "not hashref.".
Судя по исходному коду JSON::RPC::Client работа в пакетном режиме в нем не предусмотрена:
    my ($self, $uri, $obj) = @_;
    my $result;

    if ($uri =~ /\?/) {
       $result = $self->_get($uri);
    }
    else {
        Carp::croak "not hashref." unless (ref $obj eq 'HASH');
        $result = $self->_post($uri, $obj);
    }


Не посоветуете библиотеку для работы с JSON-RPC?
Или тут придется писать свой код?
Вопрос: Разбор JSON с сервиса DaData

Господа, все приветствую. Раньше проводил разбор JSON старым "дедовским" методом, однако давно уже существует в Delphi встроенное средство для разбора JSON. Может кто подскажет, как разобрать вот такой Джейсон?
{
    "suggestions": [
        {
            "value": "ПАО СБЕРБАНК",
            "unrestricted_value": "ПАО СБЕРБАНК",
            "data": {
                "kpp": "775001001",
                "management": {
                    "name": "Греф Герман Оскарович",
                    "post": "Президент-председатель правления"
                },
                "branch_type": "MAIN",
                "branch_count": 1,
                "type": "LEGAL",
                "opf": {
                    "code": "12247",
                    "full": "Публичное акционерное общество",
                    "short": "ПАО"
                },
                "name": {
                    "full_with_opf": "ПУБЛИЧНОЕ АКЦИОНЕРНОЕ ОБЩЕСТВО \"СБЕРБАНК РОССИИ\"",
                    "short_with_opf": "ПАО СБЕРБАНК",
                    "latin": null,
                    "full": "СБЕРБАНК РОССИИ",
                    "short": "СБЕРБАНК"
                },
                "inn": "7707083893",
                "ogrn": "1027700132195",
                "okpo": null,
                "okved": null,
                "state": {
                    "status": "ACTIVE",
                    "actuality_date": 1443312000000,
                    "registration_date": 677376000000,
                    "liquidation_date": null
                },
                "address": {
                    "value": "г Москва, ул Вавилова, д 19",
                    "unrestricted_value": "г Москва, ул Вавилова, д 19",
                    "data": {}
                }
            }
        }
    ]
}

Массив превращаю в объект, а потом начинаются чудеса и вылеты.
Заранее благодарен.
Ответ:
bssat
Дальше пытаюсь массив сделать объектом и на этом все затыкаться начинает.
Так у вас массив из 1 элемента. Сначала получите значение 1-ого (т.е. с индексом 0) элемента - это и будет объект.
AJSArr.Get(i);
Вопрос: Редактирование JSON

Здравствуйте! Написал скрипт для редактирования JSON
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php 
$body = file_get_contents('rules-my.conf');
$nimble = json_decode($body, true) or die('ошибка');
 
 
$stream=($nimble['SyncResponse']['LivePullSettings']['streams']);
$auth=($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule']);
 
echo "<h2>Текушие настройки трансляций</h2><br>";
for ($i = 0; $i < count($stream); $i++)
{
    echo ("<h4>Конфигурация ".(1+$i)."</h4>:<br> Имя потока: ".$stream[$i]['stream']."<br> Ссылка на входящий поток :".$stream[$i]['urls']['0']."<br><br>");
}
 
echo "<h2>Текушие настройки авторизации</h2><br>";
for ($a = 0; $a < count($auth); $a++)
{
    echo ("<h4>Конфигурация ".(1+$a)."</h4>:<br> Имя потока: ".$auth[$a]['StreamName']."<br> Пароль авторизации: ".$auth[$a]['WmsAuth']['Password']."<br><br>");
}
if(!empty($_POST)){
$stream_name = $_POST['stream'];
$instream = $_POST['instream'];
$authsp = $_POST['authsp'];
$butname = trim($_POST['butname']);
$id =$_POST['id'];
 
if ($butname == 'Добавить' && $stream_name !='' && $instream !=''){
$nimble['SyncResponse']['LivePullSettings']['streams'][$i]=array('id'=>(1+$i),'app'=>'live','stream'=>$stream_name,'urls'=> Array('0'=>$instream),'protocol' => 'RTSP','duration' => '6','transmux' => Array(),'RtspSettings' => Array('mode' => 'TCP_UDP')) ;
$nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'][$a]=array('VHostName'=>'','AppName'=>'live','StreamName'=>$stream_name,'MaxConnectionCount'=>'0','MaxBandwidth'=>'0','WmsAuth'=>Array('TimeTolerance'=>'360','Password'=>$authsp,'Protocols'=>Array('0'=>'HLS')));
//print_r ($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'][$a]);
$nimble = json_encode($nimble, JSON_HEX_QUOT);
 
$f = fopen('rules.conf', 'w');
fputs($f, $nimble);
fclose($f);
 
}
 
if ($butname == 'Удалить' && $id !=''){
unset($nimble['SyncResponse']['LivePullSettings']['streams'][($id-1)]);
unset($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'][($id-1)]);
//print_r ($nimble);
$nimble = json_encode($nimble, JSON_HEX_QUOT);
 
$f = fopen('rules.conf', 'w');
fputs($f, $nimble);
fclose($f);
 
}
}
 ?>
Выдает вот это
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  
{  
   "SyncResponse":{
"LivePullSettings":{  
            "hash":"1452631466996",
            "streams":{  
                "0":{  
                    "id":1,
                    "app":"live",
                    "stream":"s1.stream",
                    "urls":[  
                        "rtsp:\/\/192.168.88.201\/h264"
                    ],
                    "protocol":"RTSP",
                    "duration":"6",
                    "transmux":[  
 
                    ],
                    "RtspSettings":{  
                        "mode":"TCP_UDP"
                    }
                },
                "2":{  
                    "id":3,
                    "app":"live",
                    "stream":"s4.stream",
                    "urls":[  
                        "rtsp:\/\/192.168.88.203\/h264"
                    ],
                    "protocol":"RTSP",
                    "duration":"6",
                    "transmux":[  
 
                    ],
                    "RtspSettings":{  
                        "mode":"TCP_UDP"
                    }
                }
            }
        },
    }
}
А надо вот так
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{  
   "SyncResponse":{
 
      "LivePullSettings":{  
         "hash":"1452631466996",
         "streams":[  
            {  
               "id":"56955977df224f4c58000081_1452628885911",
               "app":"live",
               "stream":"s1.stream",
               "urls":[  
                  "rtsp://192.168.88.200/h264"
               ],
               "protocol":"RTSP",
               "duration":6,
               "transmux":[  
 
               ],
               "RtspSettings":{  
                  "mode":"TCP_UDP"
               }
            },
            {  
               "id":"569565aa7d5c0047b3000081",
               "app":"live",
               "stream":"s2.stream",
               "urls":[  
                  "rtsp://192.168.88.201/video"
               ],
               "protocol":"RTSP",
               "duration":6,
               "transmux":[  
 
               ],
               "RtspSettings":{  
                  "mode":"TCP_UDP"
               }
            },
            {  
               "id":"56955977df224f4c58000081_1452628885912",
               "app":"live",
               "stream":"s9.stream",
               "urls":[  
                  "rtsp://admin:rimus@192.168.88.208:554/mpeg4/ch01/main/"
               ],
               "protocol":"RTSP",
               "duration":6,
               "transmux":[  
 
               ],
               "RtspSettings":{  
                  "mode":"TCP_UDP"
               }
            }
            
         ]
      },
   }
}
1. Как избавиться от экранирования слэшей?
2. Как сохранять массив в квадратных скобках и без индекса 0,1,2 и т.д.
Ответ: В цикле нельзя привязывать к id настроек, они могут отличатся от индекса массива
PHP
1
2
3
4
5
6
for($i=0; $i<count($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule']); $i++) {
            if ( $nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'][$i]['id'] === $id ) { // вот тут ['id'] может иметь любое число.
                array_splice($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'] , $i , 1);
                break;
            }
        }
это только для эксперимента я добавляю свой id, в данном случае $i
PHP
1
$nimble['SyncResponse']['LivePullSettings']['streams'][$i]=['id'=>($i),
....

У меня уже есть JSON с настройками, мне надо научиться их редактировать.

Добавлено через 8 минут
Вот так вот заработало
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($butname == 'Удалить' && $id !=''){
//array_splice($nimble['SyncResponse']['LivePullSettings']['streams'][$id]);
//array_splice($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'][$id]);
 
array_splice($nimble['SyncResponse']['LivePullSettings']['streams'] , $id , 1);         
array_splice($nimble['SyncResponse']['ServerAuthorizationProperties']['AuthRule'] , $id , 1);       
 
//print_r ($nimble);
$nimble = json_encode($nimble, JSON_HEX_QUOT | JSON_UNESCAPED_SLASHES);
 
$f = fopen('rules.conf', 'w');
fputs($f, $nimble);
fclose($f);
 
}
Спасибо!

Добавлено через 18 часов 3 минуты
Еще проблема появилась, после разбора оригинального json
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
  "SyncResponse":{
"ServerAuthorizationProperties":{  
         "ServerAuthPropertiesHash":"1452630400",
         "AuthRule":[  
         {  
               "VHostName":"",
               "AppName":"live",
               "StreamName":"s3.stream",
               "MaxConnectionCount":0,
               "MaxBandwidth":0,
               "WmsAuth":{  
                  "TimeTolerance":360,
                  "Password":"1234rfvcxzaq",
                  "Protocols":[  
                     "HLS"
                  ]
               }
            },
         ]
      },
"LivePullSettings":{  
         "hash":"1452631466996",
         "streams":[  
            {  
               "id":"56955977df224f4c58000081_1452628885911",
               "app":"live",
               "stream":"s1.stream",
               "urls":[  
                  "rtsp://192.168.88.200/h264"
               ],
               "protocol":"RTSP",
               "duration":6,
               "transmux":[  
 
               ],
               "RtspSettings":{  
                  "mode":"TCP_UDP"
               }
            },          
         ]
      },
 "HlsDRMSettings":{  
         "hash":"0",
         "url":"",
         "key":"",
         "KeyServerSettings":{  
 
         }
      },
   }
}
и сборки нового, отредактированного , в объекте json "KeyServerSettings" меняет фигурные скобки на квадратные, как это исправить?
Вопрос: Подскажите валидатор json.

В проекте используется Newtonsoft.Json.
Файл загружается и отправляется соисполнителю проекта.
В частности приходит ошибка при { вместо [.
Ответ: Хммм.
Данный парсер имеет особености:
- хотел в оперативке изменить им тот файл который открыл. Не вышло.
Может изменять только простые значения атрибутов. Если мне в цикле надо изменить все объекты, то не даёт.
- для небольших правок есть много разных объектов: jObject\jProperty\jToken\....
- writer для записи можно основать только на стриме от system.io. Т.е. связать с файлом на диске. Мне нужно было без диска в оперативке.
В результате сделал костыль через создание другого файла. Т.е. фактически переписал из первого файла во второй файл.
Если у кого что будет по теме - велкам сюда.
Вопрос: Парсер для JSON на VB6

Добрый день, получаю ответы с сервера в виде JSON строки, строка длинная и содержит большую вложенность данных, поэтому хотелось бы найти рабочий парсер, который может парсить сложные json данные. Парсер выложенный на офф. сайте для vb6 не парсит весь json, а только часть, после этого "померает". Может кто нибудь, что нибудь подсказать?
Ответ:
автор
Проверил парсер, работает пока на отлично, видит все уровни вложенности...

только вот VB6 не удобный язык по работе именно с массивами и объектами. Все это мучительно в сравнении с той же явой. Но старина во многом другом мне очень нравится.