Xamarin 应用程序 - 如何将 JSON 对象转换为图像,从 Azure SQL DB 读取

Posted

技术标签:

【中文标题】Xamarin 应用程序 - 如何将 JSON 对象转换为图像,从 Azure SQL DB 读取【英文标题】:Xamarin Application - How to convert JSON Object to Image, read from Azure SQL DB 【发布时间】:2021-04-02 06:38:24 【问题描述】:

我不确定我的问题是否正确(我的英语...),但情况如下:

    有一个窗体应用程序 此应用程序将映像作为 byte[] 存储到 AZURE SQL 数据库(列类型“image”) 还有一个 Xamarin 移动应用程序 此移动应用程序想要读取该图像

为此有一个数据模型:

我在我的模型中尝试这个:

public byte[] AppUsers_Logo get; set; 但是出现错误:

Newtonsoft.Json.JsonReaderException 消息=读取字节错误。意外标记:StartObject。路径“[0].AppUsers_Logo.type”。

然后将数据类型更改为object

namespace MPPCProvisions.Models

    public class tbl_AppUsersModel
    
        public string id  get; set; 
        public int AppUsersNumber  get; set; 
        public string AppUsers_FirmaName  get; set; 
        public object AppUsers_Logo  get; set; 
    
 

并尝试阅读... whitch 还可以,但转换.... 不起作用:(

// /////////////////////////////////////////
// read AppUser_Logo from AZURE DB

var appUser = (await App.MobileService.GetTable<tbl_AppUsersModel>().Where(a => a.AppUsersNumber == 1).ToListAsync());
            
foreach (var item in appUser)

    byte[] appUserLogo = ObjectToByteArray(item.AppUsers_Logo);



byte[] ObjectToByteArray(object obj)

    if (obj == null)
       return null;
    BinaryFormatter bf = new BinaryFormatter();
    using (MemoryStream ms = new MemoryStream())
    
        bf.Serialize(ms, obj);
        return ms.ToArray();
    

也许有人可以帮助我:我必须如何转换这个对象来获取图像?

感谢您的帮助 亚当

【问题讨论】:

你为什么用object而不是byte[]? 另外,通常最好将图像存储在文件系统或 blob 存储中,并仅将路径或 guid 存储在您的数据库中 【参考方案1】:

您是否尝试过反序列化您的图像?

JsonConvert.DeserializeObject<byte[]>((string)AppUsers_Logo));

【讨论】:

通过这个解决方案我得到了错误:System.InvalidCastException Message=Specified cast is not valid。 :(

以上是关于Xamarin 应用程序 - 如何将 JSON 对象转换为图像,从 Azure SQL DB 读取的主要内容,如果未能解决你的问题,请参考以下文章

C# (Xamarin) 如何将 JSON 写入数组?

Json 到 ListView - 无法将类型转换为 IEnumerable - Xamarin

我找不到如何在我的 xamarin 项目中使用 json 格式

提取 JSON 数据 Xamarin

如何序列化两个参数Json转换?

在 Xamarin 中发布 Json 字符串