Данные в формате JSON

  • Автор темы Автор темы kasper
  • Дата начала Дата начала
А как вы себе представляете json с кучей уровней вложенности в текущих объектах зеннопостера?
 
А как вы себе представляете json с кучей уровней вложенности в текущих объектах зеннопостера?
1 блок - 1 данные
например для первого уровня этом может быть Item.Value
для второго уровня Item1->Item2.Value
 
Есть такая таска но пока без сроков на реализацию.
 
1 блок - 1 данные
например для первого уровня этом может быть Item.Value
для второго уровня Item1->Item2.Value
Ну т.е. это будет доступно через код?
на шарпе и так можно собрать себе десериализатор для json
Сдается мне что лучше поклянчить сниппет, который надо положить в библиотеку себе на комп, который на выходе будет получать словарь из строки json, а там уже допиливать самостоятельно этот сниппет под требуемые задачи
 
пуляешь сюда json на выходе готовый класс..ниче мудрить не нужно..
пример как все просто.
1. есть такой json VK
2. гуглим любой онлайн JSON VIEWER
https://www.jsoneditoronline.org/
смотрим структуру, уровни вложенности и что нам нужно извлекать.

3. пуляем весь json сюда http://json2csharp.com/
нам создали готовый класс
upload_2015-2-6_2-46-12.png


выпиливаем лишние свойства. оставляем только те, что нам нужно.

к примеру, возьмем только id + owner_id + title

компилим в студии dll с этим классом.

C#:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JSOND
{
    public class Response
    {
        public int id { get; set; }
        public string title { get; set; }
        public int owner_id { get; set; }
    }

    public class RootObject
    {
        public List<Response> response { get; set; }
    }


}

подключаем эту dll + JsonNET
не забываем про using

4. в снипете уже работаем с нашим классом. можно и весь класс оставить, без выпиливания. как хотите.

C#:
Развернуть Свернуть Копировать
string json = project.Variables["json"].Value;
var table = project.Tables["table"];

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

for (int i = 0; i < obj.response.Count; i++)
{   
    string str = String.Format("{0};{1};{2}", obj.response[i].id, obj.response[i].owner_id, obj.response[i].title);
    table.AddRow(str);
}

return 1;

на выходе получим такую таблицу ( в этом примере)
upload_2015-2-6_2-57-43.png
 
имеем переменную json, в ней все как есть отсюда http://pastebin.com/XhJAjJNG#
создаем джаваскрипт кубик
пишем в нем
JavaScript:
Развернуть Свернуть Копировать
var obj = {-Variable.json-};
var out = '';
for (var i = 0; i < obj.response.length; i++){ 
    out += obj.response[i].id+';'+obj.response[i].owner_id+';'+obj.response[i].title+'\n'
}
получаем текст
в следующем кубике сохраняем его в csv
все
не требует браузера
 
Последнее редактирование:
имеем переменную json, в ней все как есть отсюда http://pastebin.com/XhJAjJNG#
создаем джаваскрипт кубик
пишем в нем
JavaScript:
Развернуть Свернуть Копировать
var obj = {-Variable.json-};
var out = '';
for (var i = 0; i < obj.response.length; i++){ 
    out += obj.response[i].id+';'+obj.response[i].owner_id+';'+obj.response[i].title+'\n'
}
получаем текст
в следующем кубике сохраняем его в csv
все
Джаваскрипт требует вроде браузера.

А компилить что-то в студии - это конечно круто, но ни разу ни юзер френдли :) Тем более это нужна лицуха на эту студию.
 
express бесплатная
 
уже давно выкатили visual studio community 2013 которая по функционалу как про версия и бесплатная.
лицензия ограничивает только коммерческую разработку.
 
А почему на js не работает вот такой код? Поддержка JSON является нативной для любого современного js движка.
Код:
Развернуть Свернуть Копировать
var user = '{-Variable.post-}';
user = JSON.parse(user);
var result = user;
 
если вас останавливает этот недостаток, то я могу только сказать, что клиенты выбрали не того исполнителя )
 
  • Оценить
Реакции: Juror
Json.NET давно юзаю в VS.
как её подключить в зенке, куда dll кидать?
скидывал их в папку зены и проекта, в директивах using Newtonsoft.Json не определяется
 
Json.NET давно юзаю в VS.
как её подключить в зенке, куда dll кидать?
скидывал их в папку зены и проекта, в директивах using Newtonsoft.Json не определяется
dll надо положить в папку ExternalAssemblies, она находится в папке с зеннопостером.
И затем подключить эту длл к проекту:
http://zennolab.com/wiki/ru:project_maker:проекты:редактирование_проекта:снипеты
 
  • Оценить
Реакции: money4honey
dll надо положить в папку ExternalAssemblies, она находится в папке с зеннопостером.
И затем подключить эту длл к проекту:
http://zennolab.com/wiki/ru:project_maker:проекты:редактирование_проекта:снипеты
спасибо, сам нашёл этот ответ буквально за минуту как ты подсказал)
Ссылки из GAC -> добавить -> обзор (.dll)
Директивы using и общий код -> using Newtonsoft.Json;
 
выпиливаем лишние свойства. оставляем только те, что нам нужно.

к примеру, возьмем только id + owner_id + title

компилим в студии dll с этим классом.

А как скомпилировать библиотеку, если в классе есть вложенные массивы,
например вот такие:

Код:
Развернуть Свернуть Копировать
public class Org
{
    public int branch_count { get; set; }
    public string id { get; set; }
    public string name { get; set; }
}

public class Response
{
    public string name { get; set; }
    public Point point { get; set; }
    public int timezone_offset { get; set; }
    public List<ContactGroup> contact_groups { get; set; }
    public Flags flags { get; set; }
    public NameEx name_ex { get; set; }
    public List<ExternalContent> external_content { get; set; }
    public Context context { get; set; }
    public Stat stat { get; set; }
    public string segment_id { get; set; }
    public List<AttributeGroup> attribute_groups { get; set; }
    public List<Rubric> rubrics { get; set; }
    public string region_id { get; set; }
    public List<AdmDiv> adm_div { get; set; }
    public string id { get; set; }
    public Ads ads { get; set; }
    public string address_comment { get; set; }
    public Reviews reviews { get; set; }
    public Schedule2 schedule { get; set; }
    public Address address { get; set; }
    public string address_name { get; set; }
    public string type { get; set; }
    public Org org { get; set; }
    public string hash { get; set; }
}

public class RootObject
{
    public List<Response> response { get; set; }
}

И как это будет выглядеть в снипете?
 
Последнее редактирование:
А как скомпилировать библиотеку, если в классе есть вложенные массивы,
например вот такие:
Догадался сам :-)

Теперь не понятно как вывести в таком снипете классы, которые входят в класс Response в виде списков и массивов.

Код:
Развернуть Свернуть Копировать
public class Response
{
    public string name { get; set; }
    public Point point { get; set; }
    public int timezone_offset { get; set; }
    public List<ContactGroup> contact_groups { get; set; }
    public Flags flags { get; set; }
    public NameEx name_ex { get; set; }
    public List<ExternalContent> external_content { get; set; }
    public Context context { get; set; }
    public Stat stat { get; set; }
    public string segment_id { get; set; }
    public List<AttributeGroup> attribute_groups { get; set; }
    public List<Rubric> rubrics { get; set; }
    public string region_id { get; set; }
    public List<AdmDiv> adm_div { get; set; }
    public string id { get; set; }
    public Ads ads { get; set; }
    public string address_comment { get; set; }
    public Reviews reviews { get; set; }
    public Schedule2 schedule { get; set; }
    public Address address { get; set; }
    public string address_name { get; set; }
    public string type { get; set; }
    public Org org { get; set; }
    public string hash { get; set; }
}


public class RootObject
{
    public List<Response> response { get; set; }
}

Например: как в таком снипете

Код:
Развернуть Свернуть Копировать
string json = project.Variables["json"].Value;
var table = project.Tables["table"];

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

for (int i = 0; i < obj.response.Count; i++)
{
    string str = String.Format("{0};{1};{2}", obj.response[i].id, obj.response[i].owner_id, obj.response[i].title);
    table.AddRow(str);
}

return 1;

вывести

Код:
Развернуть Свернуть Копировать
public List<AdmDiv> adm_div { get; set; }

при чём не весь список а конкретное значение из этого списка.
 
Последнее редактирование:
пуляешь сюда json на выходе готовый класс..ниче мудрить не нужно..
пример как все просто.
1. есть такой json VK
2. гуглим любой онлайн JSON VIEWER
https://www.jsoneditoronline.org/
смотрим структуру, уровни вложенности и что нам нужно извлекать.

3. пуляем весь json сюда http://json2csharp.com/
нам создали готовый класс
Посмотреть вложение 7257

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

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)