powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите валидатор json.
25 сообщений из 65, страница 2 из 3
Подскажите валидатор json.
    #39505965
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если у кого что будет по теме - велкам сюда.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var src = JObject.Parse(json);

var target = JObject.FromObject(new {
   b = src["b"],
   message = src["message"],
   p = new {
      A = new[] { src["p"]["A"] },
      B = new[] { src["p"]["B"] },
      C = new[] { src["p"]["C"] },
   },
   warning = src["warning"]
});
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506016
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот даже не поленился и накидал:
Код: 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.
public class Item
    {
        public IList<string> informationAssociations;
        public double lat;
        public double lon;
    }

    public class AA
    {
        public string b;
        public string message;
        public BB p;
        public string[] warning;
    }

    public class BB
    {
        public Item[] A;
        public Item[] B;
        public Item[] C;
    }

    class Program
    {
        static void Main(string[] args)
        {
            var a = new AA()
            {
                b = "test",
                message = "aaaaaaaa",
                p = new BB()
                {
                    A = new Item[] { new Item() { informationAssociations = new List<string>(), lat = 5.3, lon = 7.6 } },
                    B = new Item[] { new Item() { informationAssociations = new List<string>(), lat = 5.3, lon = 7.6 } },
                    C = new Item[] { new Item() { informationAssociations = new List<string>(), lat = 5.3, lon = 7.6 } }
                },
                warning = new string[] { @"File /schemes/1/ not found" }
            };

            var s = JsonSerializer.Create();
            using (var w = new System.IO.StreamWriter(@"D:\test.txt"))
            {
                s.Serialize(new JsonTextWriter(w), a);
            }
        }
    }


на выходе получился файл:
{"b":"test","message":"aaaaaaaa","p":{"A":[{"informationAssociations":[],"lat":5.3,"lon":7.6}],"B":[{"informationAssociations":[],"lat":5.3,"lon":7.6}],"C":[{"informationAssociations":[],"lat":5.3,"lon":7.6}]},"warning":["File /schemes/1/ not found"]}

вроде всё как в рабочем варианте. Не понимаю в чём проблема.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506045
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pu4koffНе понимаю в чём проблема.
подозреваю, что топикстартер не желает вносить изменения в сериализуемый класс
и искусственно делать массив из одного айтема.

лечится конвертером

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    class ItemConverter : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return (objectType == typeof(Item));
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            throw new NotImplementedException();
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
           new JArray(JObject.FromObject(value)).WriteTo(writer);
        }
    }
....

 string json = JsonConvert.SerializeObject(v, Formatting.Indented,  new JsonSerializerSettings { Converters = { new ItemConverter() } });
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506057
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Во! Ты самый умный.
Конвертер видел в api но как юзать не врубился.
И сериализации с классами тоже нету. Занафига мне они.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506105
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123И сериализации с классами тоже нету
анонимный класс сериализуется? Ну если крякает как утка - значит утка
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506109
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Это не понял. Вот у меня, например, из автокада ole server я стряпаю json.
Или из субд получаю.
Нету никаких классов.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506113
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

это я не понял. json врукопашную собирается? без сериалиализации?
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506118
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Да.
У xml json изначально было назначение передать структуры данных, а не классы.
Это просто труба.
Другой вопрос, если даже захотеть классы, то где я их возьму?
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506120
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
ГИС система выдаёт json уже готовый.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506142
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123структуры данных, а не классы.
классы являются вполне себе структурой данных

Petro123Другой вопрос, если даже захотеть классы, то где я их возьму?
сгенерировать по схеме
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506158
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилклассы являются вполне себе структурой данных
Экземпляры мне не нужны. Сериализация это экземпляры.
Изопропилсгенерировать по схеме
Покажи для автокада.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506159
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по школе, класс это данные плюс методы).
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506188
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Кстати, по школе, класс это данные плюс методы).
трансфер-объект о методах не в курсе
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506199
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В проекте используется Newtonsoft.Json.
зачем, если нет ни классов, ни экземпляров?
строки ескейпить что ли?
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506250
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Изопропил,
Во! Ты самый умный.
Конвертер видел в api но как юзать не врубился.
И сериализации с классами тоже нету. Занафига мне они.

Конвертер будет работать только при наличии класса, который используется для десериализации.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506253
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

И ещё раз повторю своё решение, работает БЕЗ классов для JSON.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var src = JObject.Parse(json);

var target = JObject.FromObject(new {
   b = src["b"],
   message = src["message"],
   p = new {
      A = new[] { src["p"]["A"] },
      B = new[] { src["p"]["B"] },
      C = new[] { src["p"]["C"] },
   },
   warning = src["warning"]
});
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506258
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилтрансфер-объект о методах не в курсе
Суслика видишь? ))).
Получается ни с какой стороны классы не нужны. У самого Телерика биндинг json тоже без классов но с форматом и структурой.
В парсере есть работа с токенами. Кроме классов.
Банальный Nodes не имеет отношения к классам и сериализации.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506261
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Да. Попробую отпишусь. Текучка.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506263
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКонвертер будет работать только при наличии класса,
Фигово.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506302
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVosttКонвертер будет работать только при наличии класса,
Фигово.
ну дык и строй дерево из JArray,JObject и JValue
и сериализуй его потом
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506308
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня такой костыль если чё)):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var jObj = JObject.Parse (file1
var tempFile = .....
wtite = JsonTextWriter ( tempFile
JToken jtokVal = jObj ["p"];       
                  
foreach (JProperty x in (JToken) jtokVal )
{
wtite.StartArray ();// ставит скобку))))
writer.WriteRaw (tokItems.ToString);
.....
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506314
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Я не понимаю как строить, если известен только уровень скобки. Т.е. добаить array тип. А сами классы неизвестны по маленькому куску кода.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506386
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Изопропил,
Я не понимаю как строить, если известен только уровень скобки. Т.е. добаить array тип. А сами классы неизвестны по маленькому куску кода.

если я правильно понял вопрос - можно так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            using(JsonWriter writer = new JsonTextWriter(sw))
            {
                
                JObject root = new JObject();
                root.Add("message", new JValue("msg"));
                var p = new JObject();

                var oa = new JObject(); 
                oa.Add("lon", 12.0);
                oa.Add("lat", 14.0);
                p.Add("A",new JArray(oa));

                p.Add("B", new JArray(JObject.FromObject(new { lat=13.0,lon=16.0})));

                root.Add("p", p);
                root.WriteTo(writer);
            }

            string json = sb.ToString();
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506398
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Все что после скобок, т.е. напр. lat и lon зпранее не известно.
Известен root и класс p.
...
Рейтинг: 0 / 0
Подскажите валидатор json.
    #39506405
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
Я перекидываю в другой файл writer.WriteRaw (token)
И пофиг что там за дерево классов, свойств в 50 поколений.
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подскажите валидатор json.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]