Такие разборы задач отлично помогают потренироваться в подходах к решению рабочих задач + увеличить насмотренность

Ниже сам JSON, нужно найти ошибки и предложить свои варианты исправления

Мой ход рассуждений для решения задачи 

  1. Параметр consumer. 

    Почему это массив? Я так подозреваю, что покупатель может быть только один, тогда делать его массивом избыточно. Если мы это исправим, то у нас уйдут лишние скобки для обозначения объекта и структура станет более читаемой и приятной для работы. 

  2. Параметр rank меня оч смущает, можно понять двояко структуру. 

    Если он состоит из 2х параметров, то есть первый это sub: {code:"12321"}, а второй параметр просто без названия {code: "C"}, то я бы дал этому параметру тоже название. 

    Втораягипотеза, что sub — это внешний какой-то параметр и он относится не к rank, а к consumer, поэтому я бы его вынес наверх и у rank оставил бы просто code C.

  3. Меня в целом очень смущает добавление объекта code. Почему нельзя сразу значение стрингой передать. В чем сакральный смысл усложнения не понятно

  4. Формат даты рождения. 

    Не знаю на сколько ок оставлять в формате dd.mm.yyyy. Может быть стоит передать на ISO, но это бантик. Просто заменится формат на YYYY‑MM‑DD.

  5. Возраст у детей я бы указывал или также датой и вычислял, то есть добавил бы birthdate, а именно цифру возраста указывал бы цифрой, но это тоже спорно.

  6. Ну и зачем делать data — тоже не понятно.

    Если только у нас не может быть несколько consumer, но я так понимаю, что не может такого быть, поэтому я бы его тоже убрал чтобы структуру не усложнять.

  7. Массив children можно поместить внутрь consumer, так как дети явно относятся к покупателю.

По итогу получается вот такой файл: 

{
"consumer": {
  "type": "F7",
  "rank": "C",
  "sub": "C4",
  "birthdate":"1980-11-03",
"children": [
  {
    "birthdate":"1991-11-03",
    "age":"11",
    "sex":"F"
  },
  {
    "birthdate":"1998-12-07",
    "age":"18",
    "sex":"M"
  }
]
} }

Комментарии (12)


  1. DjUmnik
    13.08.2025 11:42

    Оказывается, гонять джейсоны тоже нужно уметь


    1. devunion
      13.08.2025 11:42

      Так-да. Видел как-то проект, где в JSON лежали куски HTML и CSS, которые рендерились на клиенте.


  1. LeshaRB
    13.08.2025 11:42

    1. nronnie
      13.08.2025 11:42

      LOL. Знатоки JSON-ов. "Children" (без "s") это и есть множественное число от "child" :)))


      1. LeshaRB
        13.08.2025 11:42

        Да мой косяк. Ступил (


      1. gsaw
        13.08.2025 11:42

        Может это двухмерный массив:)


        1. jooher
          13.08.2025 11:42

          Двумерный был бы childrenren


  1. Mayurifag
    13.08.2025 11:42

    Что я бы добавил:

    1. Должны ли мы соответствовать какой-нибудь спецификации? Здесь "data" и "type" резанули глаза, случаем не хочет ли интервьюер услышать хоть какое-то упоминание JSON:API (в статье упоминается «насмотренность»)? Тогда немного по-другому будет устроен финальный json.

    2. Должны ли мы максимально оптимизироваться по байтам и сокращать передачу данных? Учитывая, что здесь не бинарный формат (аки тот что в протобафе к примеру), видимо нет, но всё же. Если да - то можно было бы ключи привести к односимвольным, убрать rank, выбрать другой формат даты и в целом большое пространство для шаманства ещё будет на любой вкус и степень аутичности. Uglify по максимуму, короче говоря, поубирать \n, пробельчики, вот это всё ещё.

    3. Несколько непонятно, почему в финальном решении появился второй ребенок, которого на изначальной картинке, кажется, нет.


  1. izibrizi2
    13.08.2025 11:42

    На какую позицию собез? Какой навык проверяется? Типа 5 лет учился в универе, решая зубодробительный матан, а тут вот такое чудо?

    Это не насмотренность, а нерелевантная проверка навыков, после которой кандидат не пройдет испытательный срок


  1. MaksimMukharev
    13.08.2025 11:42

    В самой статье не хватает постановки задачи. Я сначала подумал, что проблема может быть в ошибке синтаксиса. Пришлось, действительно, качнуть насмотренность, вглядываясь в пример.

    Но когда стало понятно, что вопрос в проектировании, то очень не хватило цели. Задача выглядит слишком оторванной от реальности.


    1. vDyDHp8
      13.08.2025 11:42

      Плюс, тк это может быть кусок аналитической выборки и покупателей может быть много. Без постановки такое себе рассматривать.


  1. qrKot
    13.08.2025 11:42

    Ребят, ну вы чо. Просто невалидная жсонка же:

    Data/consumer/rank - тут вложенная структура с полем sub.

    А дальше вот эта штука {"code":"C"} вообще родительского узла не имеет. Т.е. rank должен либо массивом быть, либо структурой с полями sub и code