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

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

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

пуляешь сюда 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 бесплатная
 

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

уже давно выкатили 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)