Как автоматически сгенерировать файл класса C # из строки JSON [закрыто]


108

Учитывая следующий объект JSON,

form = {
  "name": "",
  "address": {
    "street": "",
    "city": "",
    "province": "",
    "postalCode": "",
    "country": ""
  },
  "phoneDay": "",
  "phoneCell": "",
  "businessName": "",
  "website": "",
  "email": ""
}

что такое инструмент для автоматического создания следующего класса C #?

public class ContactInfo
{
    public string Name { get; set; }
    public Address Address { get; set; }
    public string PhoneDay { get; set; }
    public string PhoneCell { get; set; }
    public string BusinessName { get; set; }
    public string Website { get; set; }
    public string Email { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
    public string Province { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
}

Мы уже рассмотрели эти вопросы:

Создание классов C # из схемы JSON. Спрашивается о схемах JSON, которые могут быть подходом для использования в будущем.

Преимущества и недостатки сгенерированных классов C # для объектов Json



попробуйте этот инструмент, может помочь .. tools4geeks.com/json-to-Csharp-classes
— Дирадж Палагири

Кто-нибудь знает, как сделать то же самое с Swagger YAML?
— ryanwebjackson

К сожалению, домен json2charp.com сейчас продается. Это отстой, а быстрый вариант довольно неуклюжий. Кто-нибудь знает лучшую альтернативу?
— DARKGuy

@DARKGuy jsonutils jsonutils.com
— Рафаэль

Ответы:


147

Пять вариантов:

  • Используйте бесплатный веб-инструмент jsonutils , ничего не устанавливая.

  • Если у вас есть Web Essentials в Visual Studio, используйте Правка> Специальная вставка> вставьте JSON как класс.

  • Используйте бесплатный jsonclassgenerator .exe

  • Веб-инструмент app.quicktype.io не требует ничего устанавливать.

  • Веб-инструмент json2csharp также ничего не требует установки.

Плюсы и минусы:

  • jsonclassgenerator преобразуется в PascalCase, а остальные - нет.

  • app.quicktype.io имеет некоторую логику для распознавания словарей и обработки свойств JSON, имена которых являются недопустимыми идентификаторами C #.


и Web Essentials, и json2csharp отлично справляются со своей задачей. Не пробовал jsonclassgenerator, потому что открывать отдельное приложение только для этого казалось проблемой
— Зоран П.

1
Я не пробовал jsonclassgenerator, но вижу преимущество. Например, если у вас есть макет api, вы можете взаимодействовать с набором конечных точек для восстановления ваших моделей. Вы можете пойти дальше, установив скрипт, который проверяет наличие новых коммитов и обновляет модель, если что-то изменилось. Вы не захотите каждый раз вручную вставлять новый json, поскольку это может привести к ошибкам.
— Билли Джейк О'Коннор

Инструмент json2csharp делает более приятную работу, чем VS форматирования классов, особенно имен классов. Он удалит неоднозначные символы, такие как «_», и после этого будет правильно регистрировать имена классов.
— big_water

2
"jsonutils" довольно крутой, он также может генерировать атрибуты, такие как "Json properties", jsonutils.com
— Dhanuka777,

app.quicktype.io этот не работает на некоторых машинах из соображений безопасности.
— Шон Ч.

122

Visual Studio 2012 (с установленными ASP.NET и Web Tools 2012.2 RC) поддерживает это изначально .

Visual Studio 2013 и новее имеет это встроенное.

Visual Studio Вставить JSON как снимок экрана классов (Изображение предоставлено: robert.muehsig )


4
Я считаю это решение лучшим, потому что вам не понадобится внешняя программа!
— Abraão Caldas,

перед вставкой здесь есть решение для копирования JSON из console.log в инструменте разработчика в буфер обмена. Надежда помогает.
— Shaijut

10

Если вы устанавливаете Web Essentials в Visual Studio, вы можете перейти в Edit => Past special => вставить JSON как класс.

Это, наверное, самый простой способ.

Веб-основы: http://vswebessentials.com/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.