CSV для JSON и добавить заголовок

Инициализатор никогда не вызывается, если вы не имеете доступа к БД. Если вы хотите создать БД, когда приложение начнет вызывать метод Initialize в вашем файле Global.asax:

context.Database.Initialize(true)();

Update 1:

Проблема заключается в том, что вы устанавливаете Инициализатор в другом экземпляре Database попробуйте это:

using (var db = new AppDataContext())
{
   db.Database.SetInitializer(new AppDataContextInitializer());
   db.Database.Initialize(true);
}

Или установите Инициализатор в конструкторе DbContext:

 public AppDataContext()
 {
    Database.SetInitializer(new AppDataContextInitializer());
 }
0
задан 182319283 13 July 2018 в 20:26
поделиться

2 ответа

Вы смотрите на преобразование JSON, и, конечно, это может быть достигнуто с помощью специального программирования. Я могу объяснить вам, как вы можете достичь этого в Java, но функционально он будет таким же для любого программирования по вашему выбору. Ваш вход json будет выглядеть так:

[{
    "epsilon_id": 194029423,
    "weather": "cloudy",
    "temperature": 27
},
{
    "epsilon_id": 932856192,
    "weather": "sunny",
    "temperature": 31
}]

Когда вы разбираете java с помощью популярной библиотеки Jackson, вы получите список объектов для ниже класса:

class Input
{
    @JsonProperty(access = Access.WRITE_ONLY)
    String epsilon_id,
    String weather,
    int temperature
}

Затем вы создать объект карты Map<Integer, Input>, заполнить данные, как показано ниже:

Map<Integer, Input> map = new HashMap<>();
for(Input obj : listOfInputs){
 map.put(obj.epsilon_id, obj)
};

Сериализовать свою карту результатов с помощью Джексона снова, чтобы получить желаемый формат вывода:

{
    194029423: {
        "weather": "cloudy",
        "temperature": 27
    },
    932856192: {
        "weather": "sunny",
        "temperature": 31
    }
}

Если вы не очень хорошо знакомы с Java & amp; Разбор Джексона JSON, я нашел этот учебник с образцом кода, который даст вам головной убор.

1
ответ дан Amith Kumar 17 August 2018 в 12:09
поделиться
  • 1
    Хорошо спасибо! Будет ли также возможным переформатировать даты после вытаскивания их из поля? – 182319283 13 July 2018 в 20:51
  • 2
    Я не вижу поля даты в вашем json, но да, как только ваша строковая дата будет прочитана в объекте Java, вы можете изменить его формат с помощью класса SimpleDateFormat. Ссылка1 & amp; Reference2 – Amith Kumar 13 July 2018 в 21:00
import csv, json, os
# rename this file or pass it in as process.argv[2] 
#  then pipe output into another file. or 
with open("./foo.csv") as f: 
  output = {} 
  for line in csv.DictReader(f):
    key = line.pop("epsilon_id")
    if output.has_key(key):
      print("Duplicate Id -> {} ".format(key))
    output[key] = line

#  then pipe this output into another file.
print(json.dumps(output, indent=2))
# or write a file
with open("/tmp/foo.json",'w') as f:
    json.dump(output, f)

Python делает это довольно легко: это обнаружит все типы из файла csv.

demo: https://repl.it/@markboyle/UsableIcyFeed

0
ответ дан corn3lius 17 August 2018 в 12:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: