微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用RestSharp反序列化XML-将对象嵌套到SQLite数据库中

如何解决使用RestSharp反序列化XML-将对象嵌套到SQLite数据库中

我正在从XML格式的API中提取数据并将其插入sqlite数据库中。我已经从https://xmltocsharp.azurewebsites.net/网站上进行了课程。

我的问题是,当表具有嵌套对象时。在这种情况下,它将插入到数据库中的“ Manager”一列下,然后将数据以看起来像JSON类型的格式插入数据库中。 {UUID:b878ggc5-bdg-49g-9215-29gg578a396,Name:David Becker} 有些对象比其他对象复杂,但是大多数对象只能作为UUID存储,因为可以从另一个表中检索数据,但是我无法弄清楚如何仅在新列下而不是整个对象下存储数据

这些类看起来像这样:

[XmlRoot(ElementName = "Staff")]
public class TimeStaff
{
    [XmlElement(ElementName = "UUID")]
    public string UUID { get; set; }
    [XmlIgnore]
    public string Name { get; set; }
}

[XmlRoot(ElementName = "Time")]
public class Time
{
    [XmlElement(ElementName = "UUID")]
    public string UUID { get; set; }
    [XmlElement(ElementName = "Staff")]
    public Staff Staff { get; set; }
    [XmlElement(ElementName = "Date")]
    public string Date { get; set; }
    [XmlElement(ElementName = "Minutes")]
    public string Minutes { get; set; }
    [XmlElement(ElementName = "Note")]
    public string Note { get; set; }
    [XmlElement(ElementName = "Billable")]
    public string Billable { get; set; }
    [XmlElement(ElementName = "Start")]
    public string Start { get; set; }
    [XmlElement(ElementName = "End")]
    public string End { get; set; }
    [XmlElement(ElementName = "InvoiceTaskUUID")]
    public string InvoiceTaskUUID { get; set; }
}

在上述情况下,我很乐意仅将Staff对象另存为“ StaffUUID”列,而该字段仅具有UUID属性

我的另一个问题是RestSharp似乎不适用于上面列出的属性

我的数据库插入内容如下:

var costList = APIConnector.GetobjectList<Cost>(costListAPI,configuration["TenantId"],configuration["BearerToken"]);

            db.DropAndCreateTable<Cost>();

            foreach (var item in costList)
            {
                db.Insert(item);
            }

使用方法

public static List<T> GetobjectList<T>(string apiEndpoint,string tenantId,string bearerToken)
        {
            var apiResult = APIConnectionHelper(apiEndpoint,tenantId,bearerToken);

            var data = new XmlAttributeDeserializer();

            if (apiResult.Result.IsSuccessful)
            {
                return data.Deserialize<List<T>>(apiResult.Result);
            }

            else
            {
                Console.WriteLine("Server response error: " + apiResult.Result.Content);
                return null;
            }

        }

在这里有点不了解。在这种情况下,有人可以为我指出使用Ormlite进行更复杂的数据库插入的正确方向。还有RestSharp的一些反序列化属性,我一生都找不到。 我尝试寻找解决方案,也许我的方向不对,所以很抱歉,如果已解决此问题,但我找不到。

非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。