Ответы пользователя по тегу JSON
  • Как десериализовать простой Json в массив?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Десериализуй в объекты, а затем делай Select.
    Ответ написан
    Комментировать
  • Как распарсить объект, не зная ключа?

    vabka
    @vabka
    Токсичный шарпист
    В поле seasons должна лежать HashMap<String, Season>
    Ответ написан
  • Как хранить большое количество json в mysql?

    vabka
    @vabka
    Токсичный шарпист
    Если тебе не нужно использовать колонку с json в каких-то запросах, то можно хранить в колонке с текстом (можно даже попробовать в отдельной таблице).

    Если нужно, то лучше посмотри на postgres.

    Но лучше просто попробовать создать простую базу и попробовать её нагрузить.
    300мб - это смех, а не размер
    Ответ написан
  • Что это за запрос или ответ?

    vabka
    @vabka
    Токсичный шарпист
    Выглядит как ответ от какой-то CRM, в которой хотели запустить какую-то процедуру, но произошла ошибка.

    Немного смущает наличие слов tcrm и имени m.ruchkin.
    Ответ написан
    Комментировать
  • Как сделать запрос к такому JSON файлу?

    vabka
    @vabka
    Токсичный шарпист
    Перебирай в цикле каждый элемент, пока не найдёшь элемент с искомым id - из него и бери amount
    Ответ написан
    Комментировать
  • Как записать информацию в json внутри приложения Vue.js?

    vabka
    @vabka
    Токсичный шарпист
    Что сериализации/десериализации json используются функции JSON.stringify и JSON.parse.

    Если тебе нужно сохранить файл на том же компьютере, на котором открыт сайт, то ты можешь использовать два варианта:
    1. FileSystem API (достаточно сложно на самом деле. Я не буду давать пример его использования)
    2. Использовать хак с невидимой ссылкой на скачивание.
    const obj = { "hello": "world"};
    const fileText = JSON.stringify(obj);
    const fileName = "example.json";
    
    const pom = document.createElement('a');
    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(fileText));
    pom.setAttribute('download', fileName);
    if (document.createEvent) {
      var event = document.createEvent('MouseEvents');
      event.initEvent('click', true, true);
      pom.dispatchEvent(event);
    }
    else {
      pom.click();
    }


    Для чтения файла можно использовать FileReader:
    https://itchief.ru/javascript/filereader
    Ответ написан
    Комментировать
  • Как исправить SyntaxError: "... is not valid JSON?

    vabka
    @vabka
    Токсичный шарпист
    Очевидно твой код ожидал увидеть json в ответе, а пришёл не он.
    Видимо в ответе пришёл HTML (вероятно с ошибкой/предложением аутентифицироваться/капчой)
    Смотри что пришло, читай внимательнее документацию
    Ответ написан
    Комментировать
  • Существуют ли миграции баз данных, связанные с изменением полей json(b) обьекта?

    vabka
    @vabka
    Токсичный шарпист
    Да, можно. Будет что-то типа:
    Этот запрос добавит поле "phones" в те строки, где его ещё нет, но при этом есть поле "phone". Значением будет массив из единственного значения, которое хранится в поле "phone"
    UPDATE data_table
    SET 
      jsonb_column = jsonb_set(jsonb_column, '{phones}', jsonb_build_array(jsonb_column->'phone'))
    WHERE
      (NOT (jsonb_column ? 'phones')) AND (jsonb_column ? 'phone')
    Ответ написан
    Комментировать
  • Как положить массив классов в JSON?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Большинство сериализаторов игнорируют поля и сериализуют только свойства.

    Попробуй переписать User вот так:

    public class User
        {
            public int Id { get; set; }
            public string Login { get; set;}
        }
    Ответ написан
    Комментировать
  • Пример БД в виде отдельных JSON файлов для C#?

    vabka
    @vabka
    Токсичный шарпист
    1. В такой СУБД нет никакого смысла, по тому нет никаких готовых библиотек
    2. Реализуется очень просто - ты бы быстрее свой велосипед сделал, чем получил бы ответ здесь.
    Ответ написан
    5 комментариев
  • Как правильно записать json в longtext в MySql с помощью Python?

    vabka
    @vabka
    Токсичный шарпист
    Раз уж всё равно по этой фигне не получится сделать нормальный поиск, то почему бы вместо экранирования спецсимволов не закодировать всё в base64 и записать в виде base64?

    Тоесть при записи идёт цепочка object -> json-> base64 string -> поле в базе
    А при чтении наоборот: поле в базе -> base64 string -> json -> object

    Кстати вот это у тебя не валидный JSON:
    report_days=' "Дата":"22.06.2022","Время":"17:05", "Головная боль":"Да" '
    report_json=json.dumps(report_days, ensure_ascii=False).encode('utf8')
    # в результате в report_json будет не json-объект, а json-строка, в которой всё содержимое report_days будет экранировано

    Скорее всего тебе нужно что-то такое:
    report_days = { # Тут у тебя вместо объекта строка, которая только отдалённо похожа на json
     'Дата': '22.06.2022',
     'Время': '17:05',
     'Головная боль': 'Да'
    }
    report_json = json.dumps(report_days, ensure_ascii = False).encode('utf8')
    report_json_base64 = base64.b64encode(bytes(report_json, 'utf-8'))
    # INSERT


    В каком виде вообще php это потребляет? Есть примеры записей, с которыми php работает?
    Ответ написан
  • Как форматировать JSON в такой вывод (C#)?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    using System.Text.Json;
    var text = Console.ReadLine();
    var jsonDocument = JsonDocument.Parse(text);
    
    var elements = from obj in jsonDocument.RootElement.EnumerateArray()
                   let mark = obj.GetProperty("markName").GetString()
                   let serie = obj.GetProperty("serieName").GetString()
                   let name = $"{mark} {serie}"
                   select name;
    
    var result = string.Join(", ", elements);
    Console.WriteLine(result);


    PS: в следующий раз задавай чуть более конкретный вопрос. Например "как спарсить json" - на такое ответ даже в гугле найдётся в первой строке.
    Ответ написан
    Комментировать
  • Как десериализовать массив именных объектов в именно объекте посредством Unity JsonUtility?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. У тебя json выглядит так:
    - cars
      - cars_bigs
        - force: 500
          weight: 1000
        - force: 1000
          weight: 4000
      - cars_smaller
        # и так далее

    Значит тебе объекты нужны такие:
    class CarsResult {
      public CarItem[] Cars { get; set; }
    }
    class CarItem {
      // К сожалению, нельзя на уровне системы типов выразить "Объект, у которого есть либо поле А либо поле Б"
      // Так что придётся указать оба поля
     // И нельзя это разрулить на уровне настроек сериализатора, если не придумывать кастомный сериализатор (не знаю, можно ли кастомизировать юнитивский)
      public Car[] BigCars { get; set; }
      public Car[] SmallCars { get; set; }
    }
    class Car {
      public int Force { get; set; }
      public int Weight { get; set; }
    }

    PS: В английском языке прилагательные ставятся перед существительными и не имеют числа. Так что "большие машины" - это "big cars", но никак не "Cars bigs". А "машины по меньше" - это "Smaller cars"
    PPS: Надеюсь, как указать нужные имена ты сам догадаешься, почитав документацию..
    Ответ написан
    2 комментария
  • Существует ли Open source интернет магазин с Rest Api (json)?

    vabka
    @vabka
    Токсичный шарпист
    Ну например вот: https://github.com/dotnet-architecture/eShopOnCont...
    Но это именно пример, а не настоящий магазин.
    Ответ написан
    Комментировать
  • Как выборочно десериализовать JSON?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Не вижу никакого смысла парсить частично, но если так сильно хочется:
    JsonDocument
    Utf8JsonReader
    А вот так ими пользоваться:
    https://docs.microsoft.com/en-us/dotnet/standard/s...
    На dynamic даже не смотри, его поддержку из System.Text.Json вырезали
    Ответ написан
    1 комментарий
  • Как конвертировать JSON в класс C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Я так понял, самая главная пробоема в массиве data.
    Если использовать System.Text.Json, то его можно затипизировать так:
    [JsonPropertyName("data")]
    public JsonElement[][] Data {get; init;}


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

    Ещё можно поехать башкой и написать кастомный конвертер для этой штуки в какой-нибудь DataFrame или DataTable (не помню как точно называется этот новый класс для табличек)
    Ответ написан
    Комментировать
  • Как форматировать Json объект при сереализации в файл?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    JsonConvert.SerializeObject(parsedJson, Formatting.Indented);

    edward_freedom
    Ответ написан
    2 комментария
  • Десериализация с System.text.json. Не получается распарсить сложный json ответ с API?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. Пропустил скобочки:
    Вот такой json должен быть

    {
      "status": {
        "timestamp": "2021-06-28T05:54:55.250Z",
        "error_code": 0,
        "elapsed": 28,
        "credit_count": 1,
        "total_count": 5475
      },
      "data": [
        {
          "id": 1,
          "name": "Bitcoin",
          "symbol": "BTC",
          "slug": "bitcoin",
          "num_market_pairs": 9210,
          "date_added": "2013-04-28T00:00:00.000Z",
          "tags": [
            "mineable",
            "pow",
            "sha-256",
            "store-of-value",
            "state-channels",
            "coinbase-ventures-portfolio",
            "three-arrows-capital-portfolio",
            "polychain-capital-portfolio",
            "binance-labs-portfolio",
            "arrington-xrp-capital",
            "blockchain-capital-portfolio",
            "boostvc-portfolio",
            "cms-holdings-portfolio",
            "dcg-portfolio",
            "dragonfly-capital-portfolio",
            "electric-capital-portfolio",
            "fabric-ventures-portfolio",
            "framework-ventures",
            "galaxy-digital-portfolio",
            "huobi-capital",
            "alameda-research-portfolio",
            "a16z-portfolio",
            "1confirmation-portfolio",
            "winklevoss-capital",
            "usv-portfolio",
            "placeholder-ventures-portfolio",
            "pantera-capital-portfolio",
            "multicoin-capital-portfolio",
            "paradigm-xzy-screener"
          ],
          "max_supply": 21000000,
          "circulating_supply": 18743737,
          "total_supply": 18743737,
          "cmc_rank": 1,
          "last_updated": "2021-06-28T05:54:02.000Z",
          "quote": {
            "USD": {
              "price": 34489.91295375669,
              "volume_24h": 33231566302.9618,
              "percent_change_1h": 0.24623143,
              "percent_change_24h": 4.72866241,
              "percent_change_7d": 0.0385825,
              "percent_change_30d": -6.57806083,
              "percent_change_60d": -36.08177402,
              "percent_change_90d": -40.16259997,
              "market_cap": 646469857558.1086,
              "last_updated": "2021-06-28T05:54:02.000Z"
            }
          }
        },
        {
          "id": 1027,
          "name": "Ethereum",
          "symbol": "ETH",
          "slug": "ethereum",
          "num_market_pairs": 6005,
          "date_added": "2015-08-07T00:00:00.000Z",
          "tags": [
            "mineable",
            "pow",
            "smart-contracts",
            "ethereum",
            "coinbase-ventures-portfolio",
            "three-arrows-capital-portfolio",
            "polychain-capital-portfolio",
            "binance-labs-portfolio",
            "arrington-xrp-capital",
            "blockchain-capital-portfolio",
            "boostvc-portfolio",
            "cms-holdings-portfolio",
            "dcg-portfolio",
            "dragonfly-capital-portfolio",
            "electric-capital-portfolio",
            "fabric-ventures-portfolio",
            "framework-ventures",
            "hashkey-capital-portfolio",
            "kinetic-capital",
            "huobi-capital",
            "alameda-research-portfolio",
            "a16z-portfolio",
            "1confirmation-portfolio",
            "winklevoss-capital",
            "usv-portfolio",
            "placeholder-ventures-portfolio",
            "pantera-capital-portfolio",
            "multicoin-capital-portfolio",
            "paradigm-xzy-screener"
          ],
          "circulating_supply": 116469137.499,
          "total_supply": 116469137.499,
          "cmc_rank": 2,
          "last_updated": "2021-06-28T05:54:02.000Z",
          "quote": {
            "USD": {
              "price": 1972.9974245462824,
              "volume_24h": 19489435867.08539,
              "percent_change_1h": -0.03164063,
              "percent_change_24h": 5.36554092,
              "percent_change_7d": -7.36312666,
              "percent_change_30d": -22.4570674,
              "percent_change_60d": -27.41396336,
              "percent_change_90d": 9.21290472,
              "market_cap": 229793308324.65384,
              "last_updated": "2021-06-28T05:54:02.000Z"
            }
          }
        },
        {
          "id": 825,
          "name": "Tether",
          "symbol": "USDT",
          "slug": "tether",
          "num_market_pairs": 13711,
          "date_added": "2015-02-25T00:00:00.000Z",
          "tags": [
            "payments",
            "stablecoin",
            "stablecoin-asset-backed",
            "solana-ecosystem"
          ],
          "circulating_supply": 62534142511.11169,
          "total_supply": 64471767616.826355,
          "platform": {
            "id": 1027,
            "name": "Ethereum",
            "symbol": "ETH",
            "slug": "ethereum",
            "token_address": "0xdac17f958d2ee523a2206206994597c13d831ec7"
          },
          "cmc_rank": 3,
          "last_updated": "2021-06-28T05:53:08.000Z",
          "quote": {
            "USD": {
              "price": 1.00023604778902,
              "volume_24h": 50665651395.52314,
              "percent_change_1h": -0.00327685,
              "percent_change_24h": -0.11177658,
              "percent_change_7d": -0.14175554,
              "percent_change_30d": -0.07861614,
              "percent_change_60d": 0.01010439,
              "percent_change_90d": -0.01064075,
              "market_cap": 62548903557.1897,
              "last_updated": "2021-06-28T05:53:08.000Z"
            }
          }
        },
        {
          "id": 1839,
          "name": "Binance Coin",
          "symbol": "BNB",
          "slug": "binance-coin",
          "num_market_pairs": 570,
          "date_added": "2017-07-25T00:00:00.000Z",
          "tags": [
            "marketplace",
            "centralized-exchange",
            "payments",
            "binance-smart-chain",
            "alameda-research-portfolio",
            "multicoin-capital-portfolio"
          ]
        }
      ]
    }


    2. После генерации нужно ещё руками подкорректировать классы:
    - Переименовать классы (например Root на Response)
    - Поменять типы (например double на decimal)
    - Дополнить недостающее. (Например Quote заменить на словарь)
    Код

    using System.Text.Json;
    using System.Text.Json.Serialization;
    
    public class Status
    {
        [JsonPropertyName("timestamp")]
        public DateTime Timestamp { get; set; }
    
        [JsonPropertyName("error_code")]
        public int ErrorCode { get; set; }
    
        [JsonPropertyName("elapsed")]
        public int Elapsed { get; set; }
    
        [JsonPropertyName("credit_count")]
        public int CreditCount { get; set; }
    
        [JsonPropertyName("total_count")]
        public int TotalCount { get; set; }
    }
    
    public class QuoteForCurrency
    {
        [JsonPropertyName("price")]
        public decimal Price { get; set; }
    
        [JsonPropertyName("volume_24h")]
        public decimal Volume24h { get; set; }
    
        [JsonPropertyName("percent_change_1h")]
        public decimal PercentChange1h { get; set; }
    
        [JsonPropertyName("percent_change_24h")]
        public decimal PercentChange24h { get; set; }
    
        [JsonPropertyName("percent_change_7d")]
        public decimal PercentChange7d { get; set; }
    
        [JsonPropertyName("percent_change_30d")]
        public decimal PercentChange30d { get; set; }
    
        [JsonPropertyName("percent_change_60d")]
        public decimal PercentChange60d { get; set; }
    
        [JsonPropertyName("percent_change_90d")]
        public decimal PercentChange90d { get; set; }
    
        [JsonPropertyName("market_cap")]
        public decimal MarketCap { get; set; }
    
        [JsonPropertyName("last_updated")]
        public DateTime LastUpdated { get; set; }
    }
    
    public class Platform
    {
        [JsonPropertyName("id")]
        public int Id { get; set; }
    
        [JsonPropertyName("name")]
        public string Name { get; set; }
    
        [JsonPropertyName("symbol")]
        public string Symbol { get; set; }
    
        [JsonPropertyName("slug")]
        public string Slug { get; set; }
    
        [JsonPropertyName("token_address")]
        public string TokenAddress { get; set; }
    }
    
    public class Item
    {
        [JsonPropertyName("id")]
        public int Id { get; set; }
    
        [JsonPropertyName("name")]
        public string Name { get; set; }
    
        [JsonPropertyName("symbol")]
        public string Symbol { get; set; }
    
        [JsonPropertyName("slug")]
        public string Slug { get; set; }
    
        [JsonPropertyName("num_market_pairs")]
        public int NumMarketPairs { get; set; }
    
        [JsonPropertyName("date_added")]
        public DateTime DateAdded { get; set; }
    
        [JsonPropertyName("tags")]
        public List<string> Tags { get; set; }
    
        [JsonPropertyName("max_supply")]
        public int MaxSupply { get; set; }
    
        [JsonPropertyName("circulating_supply")]
        public decimal CirculatingSupply { get; set; }
    
        [JsonPropertyName("total_supply")]
        public decimal TotalSupply { get; set; }
    
        [JsonPropertyName("cmc_rank")]
        public int CmcRank { get; set; }
    
        [JsonPropertyName("last_updated")]
        public DateTime LastUpdated { get; set; }
    
        [JsonPropertyName("quote")]
        public Dictionary<string, QuoteForCurrency> Quote { get; set; }
    
        [JsonPropertyName("platform")]
        public Platform Platform { get; set; }
    }
    
    public class Response
    {
        [JsonPropertyName("status")]
        public Status Status { get; set; }
    
        [JsonPropertyName("data")]
        public List<Item> Data { get; set; }
    }


    3. Тогда чтобы спарсить ответ надо будет просто написать код:
    var json = "{}"; // тут твой ответ json из ответа
    var responseData = JsonSerializer.Deserialize<Response>(json);
    Ответ написан
  • Как получить человекочитаемое отображение unicode-символов?

    vabka
    @vabka
    Токсичный шарпист
    Ну пусть тот кто это туда пишет пишет в нормальном виде.
    ЗЫ: Там написано "Елена"
    Ответ написан
    1 комментарий