« first day (1041 days earlier)      last day (1990 days later) » 

10:23 AM
Как мне преобразовать в такие данные:
Должно получиться что-то вроде такого результата:

[
{
"ссылка": "https://github.com/***"
"логин": UserName
"пароль": Password
},
{
"ссылка": "https://ru.stackoverflow.com/***"
"логин": UserName
"пароль": Password
},
{
"ссылка": "https://vk.com/***"
"логин": UserName
"пароль": Password
},
{
"ссылка": "https://github.com/VladislavsGeidans/wikicar.git"
"логин": UserName
"пароль": Password
}
]
из вот этого:
using (var Connect = new SQLiteConnection($"Data Source={LoginData};Version=3;New=False;Compress=True;"))
{
using (var ComText = new SQLiteCommand("SELECT origin_url, username_value, password_value FROM logins", Connect))
{
Connect.Open();
ComText.CommandType = CommandType.Text;
using (var reader = ComText.ExecuteReader())
{
var Url = reader.GetString(0);
var Login = reader.GetString(1);
var Password = reader.GetString(2);
// Url и Login и.т.д хочу записать в json формат.
}
 
@Дмитрий посмотрите на требуемый формат JSON, что видите? [] - массив {} - некий объект, который содержит "ссылка", "логин", "пароль". Вы должны создать этот объект (пусть это будет некий класс) и создать коллекцию (пусть это будет List<MyClass>. Занести туда все данные и потом с помощью string serialized = JsonConvert.SerializeObject(data, Formatting.Indented); это все преобразовать в JSON (где data - ваш List<MyClass>. В результате у вас будет string, содержащий готовый json.
Вам останется только записать его (как я уже говорил вам, File.WriteAllText("data.json" serialized);) в файл.
 
Я так понял сначало создаю класс с данными

Class.cs
{

[JsonProperty("Ссылка")]
string Link {get;set;}

[JsonProperty("Логин")]
string Login {get;set;}

[JsonProperty("Пароль")]
string PWD {get;set;}

}

Затем делаю что-то такое:

var Url = reader.GetString(0);
var LogiN = reader.GetString(1);
var Password = reader.GetString(2);



Class VN = new Class(Link=Url, Login=LogiN, PWD=Password);

И дальше просто записываю VN в файл посредством File.WriteAllText() ?
Если Я что-то не так понял скажите
 
@Дмитрий Class VN = new Class(); - это вы создаете только 1 объект вашего класса. А вы как я понял хотите создать коллекцию этих объектов. Вам нужно тогда что то вроде: List<Class> list = new List<Class>(); list.Add(new Class{Link=Url, Login=LogiN, PWD=Password}); list.Add(new Class{Link=Url, Login=LogiN, PWD=Password}); list.Add(new Class{Link=Url, Login=LogiN, PWD=Password});
И после string serialized = JsonConvert.SerializeObject(list, Formatting.Indented);
Ну и полученные данные в файл - File.WriteAllText("data.json" serialized);
 
Большое человеческое спасибо за разбор.
А только таким способом можно сериализовывать объекты?
 
@Дмитрий Это самый легкий и компактный. Если и стандартные методы, но они довольно топорные..
 
10:41 AM
А десериализировать трудно будет такой объект?
 
@Дмитрий Да нет, все тоже самое.
Сначала читаем файл в string ( string txt = File.ReadAllText(data.json); )
Потом десериализуем - var json = JsonConvert.DeserializeObject<List<Class>>(txt);
 
И на выходе я получу уже готовые данные без []{} просто ссылка, логин, пароль?
 
На выходе будет тоже, что и засовывали в JSON, то есть коллекция, List<Class>
 
Буду пробовать, спасибо ещё раз. Надо будет почитать поподробнее)
 
@Дмитрий Да на здоровье, пишите если нужен буду. (только не забудьте упомянуть через @, а то не увижу уведомления ).
 
10:55 AM
@EvgeniyZ, Понял =)
кстати ещё вопрос
@EvgeniyZ, А есть ли шифрование для этих объектов?
 
11:17 AM
@Дмитрий Тут я вам уже не помощник. Можете поискать на SO, может что поможет. Ну а так, вы можете шифровать пароли, либо весь json файл (естественно надо это делать до записи в файл, и обратное после чтения из файла).
 
 
9 hours later…
8:40 PM
@EvgeniyZ, Вопрос по свойствам, вот у меня есть свойства: [JsonProperty("Ссылка")]
string Link {get;set;}
[JsonProperty("Логин")]
string Login {get;set;} Нужно ли их как-то переопределять? например
public JsonProperty(string url, string login, string password)
{
this.Url = url;
this.Login = login;
this.Password = password;
}
а сам JsonProperty вынести в интерфейс и сделать типо:
internal interface IJsonProperty
{
string Login { get; set; }
string Password { get; set; }
string Url { get; set; }
}
??
Какая реализация лучше будет?
Просто оставить свойства как есть? Или их переопределить и сделать по этому варианту
JsonProperty - это название класса
 

« first day (1041 days earlier)      last day (1990 days later) »