我需要在我的 Xamarin Forms App 中存盤一個串列。對于票證模型,我通過 json2csharp 將 JSON 轉換為 C#。還添加了 TextBlob 否則它會告訴我:SQLite 無法讀取資料型別(串列)。使用當前代碼,我沒有收到錯誤,但不會將注釋添加到資料庫中。
JSON
{
"ticket": {
"id": 2344425,
"ticketNumber": "19783",
"subject": "Titel",
"description": "<h1>Beschreibung</h1><p>Testbeschreibung</p><h2>Device</h2><ul><li><b>manufacturer:</b>Apple18</li><li><b>model:</b>AOSP on IA Emulator</li><li><b>phonenumber:</b> 49 1234 567899</li></ul>",
"notes": [],
"status": "open"
}
}
票務.cs
public class Ticket
{
[PrimaryKey, AutoIncrement]
public int pkid { get; set; }
public string id { get; set; }
public string ticketNumber { get; set; }
public string status { get; set; }
public string subject { get; set; }
public string description { get; set; }
[TextBlob("notesBlobbed")]
public List<string> notes { get; set; }
public string notesBlobbed { get; set; }
public DateTime closed { get; set; }
public DateTime updated { get; set; }
}
SaveTicket.cs
public async void GeneralButton(object sender, EventArgs e)
{
//Wertzuweisung
General g = new General();
g.manufacturer = ManufacturerInfo.Text;
g.model = ModelInfo.Text;
g.subject = SubjectInfo.Text;
g.description = DescriptionInfo.Text;
//Verbindungsaufbau
var url = "https://.../api/ticket/create";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("AuthenticationToken", "Token");
string json = JsonConvert.SerializeObject(new { g.manufacturer, g.model, g.subject, g.description });
HttpContent content = new StringContent(json);
HttpResponseMessage response = await client.PostAsync(url, content);
//prüft ob alle Felder ausgefüllt sind Internetverbindung besteht
if (response.IsSuccessStatusCode)
{
//response initalisieren
string responseBody = await response.Content.ReadAsStringAsync();
Api api = JsonConvert.DeserializeObject<Api>(responseBody);
//Ticket speichern in Datenbank
await App.Database.SaveTicket(new Ticket
{
pkid = 1,
id = api.ticket.id,
ticketNumber = api.ticket.ticketNumber,
status = api.ticket.status,
subject = api.ticket.subject,
description = api.ticket.description,
notes = api.ticket.notes
});
await DisplayAlert("Alert", "Das Ticket wurde erfolgreich erstellt.", "Ok");
}
else
{
await DisplayAlert("Alert", "Die Verbindung ist fehlgeschlagen füllen Sie alle Felder aus und prüfen Sie Ihre Internetverbindung.", "Ok");
}
}
uj5u.com熱心網友回復:
我不知道您是否使用 nuget 包 SQLite-net pcl。該軟體包似乎不支持將串列插入資料庫。
首先,您可以在 中添加一個斷點Api api = JsonConvert.DeserializeObject<Api>(responseBody);來檢查串列的值是否為空。
然后你可以使用 SQLiteNetExtensions 包,它可以將串列插入到表中。
您可以查看兩個鏈接:如何在 SQLite.net 中存盤物件串列?和 https://social.msdn.microsoft.com/Forums/en-US/ca6c1b6f-bf83-488e-a79a-9b9ac48575a0/use-listltgt-in-database-using-sqlitenet-pcl-library?forum=xamarinforms
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/476317.html
標籤:json 列表 sqlite xamarin.forms
下一篇:使用包含滯后值的SQL計算比率
