powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / json в c#
23 сообщений из 23, страница 1 из 1
json в c#
    #40124581
gnikspam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, помогите добить формирование json на c#. Начал и далее тупик на "designs": [ и "parameters": {.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for (int i = 1; i < 3; i++)
{                                         
   writer.WriteStartObject();

   writer.WritePropertyName($"title");
   writer.WriteValue($"C-{i}");

   writer.WritePropertyName("thumbnail");
   writer.WriteValue($"images/designs/cut-{i}/{i}-w.png");

   writer.WritePropertyName("designs");                    

   writer.WriteEndObject();
}



json который нужно получить

Код: xml
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.
[
  {
    "title": "C-1",
    "thumbnail": "images/designs/cut-1/1-w.png",
    "designs": [
      {
        "source": "images/designs/cut-1/1-w.png",
        "title": "C-1 (white)",
        "parameters": {
          "zChangeable": true,
          "left": 282,
          "top": 301         
        }
      },
      {
        "source": "images/designs/cut-1/1-y.png",
        "title": "C-1 (yellow)",
        "parameters": {
          "zChangeable": true,
          "left": 282,
          "top": 301          
        }
      },
      {
        "source": "images/designs/cut-1/1-s.png",
        "title": "C-1 (silver)",
        "parameters": {
          "zChangeable": true,
          "left": 282,
          "top": 301          
        }
      },
      {
        "source": "images/designs/cut-1/1-pioneer.png",
        "title": "C-1 (pioneer 1)",
        "parameters": {
          "zChangeable": true,
          "left": 282,
          "top": 301          
        }
      },
      {
        "source": "images/designs/cut-1/1-2-pioneer.png",
        "title": "C-1 (pioneer 2)",
        "parameters": {
          "zChangeable": true,
          "left": 282,
          "top": 301         
        }
      }
    ],
    {
    "title": "C-2",
     ...
  }
]



Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
json в c#
    #40124619
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gnikspam,

А зачем изобретать велосипед? Почему не использовать стандартные библиотеки, например, Newtonsoft.Json?
...
Рейтинг: 0 / 0
json в c#
    #40124653
gnikspam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergiiW
gnikspam,

А зачем изобретать велосипед? Почему не использовать стандартные библиотеки, например, Newtonsoft.Json?


да мен не важно, можно и ее.. Важно получить вот такой сложной структуры json. т.е. когда в объект вложены еще объекты, как designe например и parameters.
...
Рейтинг: 0 / 0
json в c#
    #40124676
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnikspam
да мен не важно, можно и ее
Ну так если можно, тогда в чем вопрос. Создаете POCO-класс соответствующей структуры, заполняете и сериализуете в json.

Мало того, руками ничего не требуется писать, инструментов навалом, например https://json2csharp.com
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    public class Parameters
    {
        public bool zChangeable { get; set; }
        public int left { get; set; }
        public int top { get; set; }
    }

    public class Design
    {
        public string source { get; set; }
        public string title { get; set; }
        public Parameters parameters { get; set; }
    }

    public class Root
    {
        public string title { get; set; }
        public string thumbnail { get; set; }
        public List<Design> designs { get; set; }
    }
...
Рейтинг: 0 / 0
json в c#
    #40124694
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
не зачет!!, полный код пож.. и форматинг с отступом не забыть ))
...
Рейтинг: 0 / 0
json в c#
    #40124715
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во writer можно вставлять переносы строки и табы, проблемы, что угодно по идее. но пока не покажите весь код, не понятно, зачем вообще через writer это делать...
...
Рейтинг: 0 / 0
json в c#
    #40127548
gnikspam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
gnikspam
да мен не важно, можно и ее
Ну так если можно, тогда в чем вопрос. Создаете POCO-класс соответствующей структуры, заполняете и сериализуете в json.

Мало того, руками ничего не требуется писать, инструментов навалом, например https://json2csharp.com
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    public class Parameters
    {
        public bool zChangeable { get; set; }
        public int left { get; set; }
        public int top { get; set; }
    }

    public class Design
    {
        public string source { get; set; }
        public string title { get; set; }
        public Parameters parameters { get; set; }
    }

    public class Root
    {
        public string title { get; set; }
        public string thumbnail { get; set; }
        public List<Design> designs { get; set; }
    }



Я все понимаю что коряво и не правильно и что нужно использовать серилизация. Просто нужно добить то что есть. Подскажите ка добавить запятую в месте где указал ?

Код: 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.
  using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.Indented;

                foreach (FileInfo file in dir.GetFiles())
                {
                    writer.WriteStartObject();
                    
                    writer.WritePropertyName($"source");
                    writer.WriteValue($"images/designs/c-{1}/c-{1} (white).png");

                    writer.WritePropertyName("title");
                    writer.WriteValue($"c-{1} (white)");
                    writer.WritePropertyName("parameters");
                    writer.WriteStartObject();
                    writer.WritePropertyName("zChangeable");
                    writer.WriteValue($"true");
                    writer.WritePropertyName("left");
                    writer.WriteValue($"{269}");
                    writer.WritePropertyName("top");
                    writer.WriteValue($"{301}");
                    writer.WritePropertyName("colors");
                    writer.WriteValue($"#000000");
                    writer.WritePropertyName("removable");
                    writer.WriteValue($"false");
                    writer.WritePropertyName("draggable");
                    writer.WriteValue($"false");
                    writer.WritePropertyName("rotatable");
                    writer.WriteValue($"false");
                    writer.WritePropertyName("resizable");
                    writer.WriteValue($"false");
                    writer.WritePropertyName("boundingBox");
                    writer.WriteValue($"Base");
                    writer.WritePropertyName("autoCenter");
                    writer.WriteValue($"false");
                    writer.WriteEndObject();
                    
                    writer.WriteEndObject();                   

                }
            }



Код: xml
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.
{
  "source": "images/designs/c-1/c-1 (white).png",
  "title": "c-1 (white)",
  "parameters": {
    "zChangeable": "true",
    "left": "269",
    "top": "301",
    "colors": "#000000",
    "removable": "false",
    "draggable": "false",
    "rotatable": "false",
    "resizable": "false",
    "boundingBox": "Base",
    "autoCenter": "false"
  }
}, ? {
  "source": "images/designs/c-1/c-1 (white).png",
  "title": "c-1 (white)",
  "parameters": {
    "zChangeable": "true",
    "left": "269",
    "top": "301",
    "colors": "#000000",
    "removable": "false",
    "draggable": "false",
    "rotatable": "false",
    "resizable": "false",
    "boundingBox": "Base",
    "autoCenter": "false"
  }
}, ? {
...
...
Рейтинг: 0 / 0
json в c#
    #40127564
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnikspam,
г...о вопрос: Replace ("}, {", "}, , {")
зы не респектуте...
...
Рейтинг: 0 / 0
json в c#
    #40127570
gnikspam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи
gnikspam,
г...о вопрос: Replace ("}, {", "}, , {")
зы не респектуте...


хаа )) в моем стиле ) чувство юмора оценил ) спасибо )
...
Рейтинг: 0 / 0
json в c#
    #40127690
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnikspam,
И вам не хворать, очень позитивный пост в этом году, я его внуку буду показывать, когда он будет лениться чонить делать, как образец настойчивости и упорства.
Скажите, вот просто два вопроса,
1 Вам уж так принципиально выдирать гланды через ж...у или все же вы не умеете партикулярно выдрать - как обычно.
2 Зачем вам там запятые, это чисто дизайнерское решение? Ибо там они как корове седло
Вообще то не плохо было бы изловчится и заебен..ть всю эту поеб...нь одной строкой, (как у Пикасо - картинка одной линией, притча Пикасо, салфетка, женщина), да вот только сомневаюсь научились ли в шарпе инициализировать поля в анонимном типе анонимной функцией ( раньше был запрет).
Ну а так не плохо, ))
как говорится keep well
...
Рейтинг: 0 / 0
json в c#
    #40127703
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
да вот только сомневаюсь научились ли в шарпе инициализировать поля в анонимном типе анонимной функцией ( раньше был запрет).

Может, я, конечно, не понял, о чем речь, но вот это
Код: c#
1.
2.
3.
4.
5.
6.
var numbers = Enumerable.Range(0, 5).ToArray();
numbers
  .Select(n=> new {N = (Func<int, int>)(x=>n*x)})
  .Select(t=>t.N(numbers.Length))
  .ToList()
  .ForEach(Console.WriteLine);


вполне нормально компилируется и работает на .Net 3.5
...
Рейтинг: 0 / 0
json в c#
    #40127716
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
хорошо согласен, а как всю пое..нь отобразить
...
Рейтинг: 0 / 0
json в c#
    #40127727
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
глянь пож, что то не выходит одной строкой

Код: 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.
 class Program
    {
        static void Main()
        {
            
          
            Console.WriteLine(JsonConvert.SerializeObject(JsonBuilder(() =>
            {
                var list = new List<object>(4);
                for (var i = 0; i < 4; i++)
                {
                    list.Add(new
                    {
                        source = "images/designs/cut-1/1-w.png",
                        title = "C-1 (white)",
                        parameters = new
                        {
                            zChangeable = true,
                            left = 269,
                            top = 301,
                            colors = "#000000",
                            removable = false,
                            draggable = false,
                            rotatable = false,
                            resizable = false,
                            boundingBox = "Base",
                            autoCenter = false
                        }
                    });
                }

                return list;
            }), Formatting.Indented));
            Console.Read();
        }

        static object JsonBuilder(Func<IEnumerable<object>> action)
        {
           return new[] {new {title = "C-1", thumbnail = "images/designs/cut-1/1-w.png", designs = action.Invoke()} };
        }
    }


...
Рейтинг: 0 / 0
json в c#
    #40127737
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
что то не выходит одной строкой

А что должно выйти одной строкой? На выходе вроде как именно, что требовалось ТСу.
...
Рейтинг: 0 / 0
json в c#
    #40127744
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
хотелось бы new[] {new {title = "C-1", thumbnail = "images/designs/cut-1/1-w.png", designs = ?????} }; как у Паганини
на одной струне с играть ))
...
Рейтинг: 0 / 0
json в c#
    #40127749
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Так параметр же Formatting.Indented у JsonConvert.SerializeObject как бы намекает. Заменить на Formatting.None - всё будет в одну строку.
...
Рейтинг: 0 / 0
json в c#
    #40127753
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
нет нет вот так одной строкой
Код: c#
1.
 new[] {new {title = "C-1", thumbnail = "images/designs/cut-1/1-w.png", designs =(()=>{/*here is magic from paganini*/})}
...
Рейтинг: 0 / 0
json в c#
    #40127754
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aadon
Код: c#
1.
JsonConvert.SerializeObject(new[] {new {title = "C-1", thumbnail = "images/designs/cut-1/1-w.png", designs =(()=>{/*here is magic from paganini*/})}, Formatting.Indented)
...
Рейтинг: 0 / 0
json в c#
    #40127756
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи
Сон Веры Павловны,
нет нет вот так одной строкой
Код: c#
1.
 new[] {new {title = "C-1", thumbnail = "images/designs/cut-1/1-w.png", designs =(()=>{/*here is magic from paganini*/})}


Т.е. так?
Код: 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.
static void Main()
{
  Console.WriteLine(
    JsonConvert.SerializeObject(
      new[]
      {
        new
        {
          title = "C-1",
          thumbnail = "images/designs/cut-1/1-w.png",
          designs = Enumerable.Range(0,4)
            .Select(_=>
              new
              {
                source = "images/designs/cut-1/1-w.png",
                title = "C-1 (white)",
                parameters = new
                {
                  zChangeable = true,
                  left = 269,
                  top = 301,
                  colors = "#000000",
                  removable = false,
                  draggable = false,
                  rotatable = false,
                  resizable = false,
                  boundingBox = "Base",
                  autoCenter = false
                }
              }
            )
            .ToArray()
        }
      },
      Formatting.Indented
    )
  );
}
...
Рейтинг: 0 / 0
json в c#
    #40127757
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
ну да, все таки можно, молодец
...
Рейтинг: 0 / 0
json в c#
    #40127759
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gnikspam
Я все понимаю что коряво и не правильно и что нужно использовать серилизация. Просто нужно добить то что есть.

Ловушка невозвратных затрат .
...
Рейтинг: 0 / 0
json в c#
    #40127763
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи
да вот только сомневаюсь научились ли в шарпе инициализировать поля в анонимном типе анонимной функцией (раньше был запрет).

Анонимный тип это такой же тип как любой другой единственное ограничение это то, что он всегда генерируется как internal - бывает хочется передать его за границы сборки как dynamic, но не тут-то было.
...
Рейтинг: 0 / 0
json в c#
    #40127772
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkfka2,
да просто по извращаться в контексте умирающего форума
Shocker.Pro достаточно обоснованное и верное решение дал, но не дал реализации, автор просто в силу своей некомпетентности
не смог им воспользоваться ( аля копипаст), хотя надо отдать должное две недели долбить эту бодягу - тут должно быть упрямство.
я бы уже давно дохлую лошадь на знакомую улицу перетащил.
так что с моего имха любые правильные танцы с бубном всё-таки развивают мускулатуру ( не бесполезны)
зы может ктонить напишет реализацию по мотивам Shocker.Pro, без анонимных типов, все таки 2 недели не хухры мухры...
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / json в c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (7), Yandex Bot 5 мин., Bing Bot 9 мин.
x
x
Закрыть


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