Как автоматически сгенерировать файл класса 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.