我试图使用文档提供的稍微不同的结构向我的Algolia数据库添加一个对象,这样我就不必以字符串格式输出Json对象,但是我遇到了一个错误说明
无法将匿名类型隐式转换为System.Collections.Generic.List
我看到objs
变量中所有键/值的红色错误消息。
var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>;
List<JObject> objs = new List<JObject>();
objs = new
{
ApprovalFL = false,
FreeFL = album.FreeFL,
LicenseFL = album.LicenseFL,
AccountInfoID = album.AccountInfoID,
AlbumID = album.AlbumID,
SongID = song.SongID,
BPM = song.BPM,
AccountImageURL = album.AccountInfo.ImageURL,
AccountType = "Artist",
AlbumName = album.AlbumName,
Artist = artist,
FeaturedArtist = songArtistsList,
ImageURL = album.ImageURL,
iTunesURL = album.iTunesURL,
LabelName = album.LabelName,
Title = album.AlbumName,
UserID = album.AccountInfo.UserID,
UploadDate = song.UploadDate,
Duration = song.Duration,
objectID = song.SongID
};
songIndexHelper.AddObjects(objs);
以下是对文档的引用:https://www.algolia.com/doc/api-reference/api-methods/add-objects/
但是编辑替代方法,我的LicenseFL格式是关闭的
List<JObject> objs = new List<JObject>();
objs.Add(JObject.Parse(@"{""ApprovalFL"":false, ""FreeFL"":" + album.FreeFL + ",""LicenseFL"":" +album.LicenseFL+ "}"));
songIndexHelper.AddObjects(objs);
遗憾的是,Algolia docs专注于使用JObject
(和JSON字符串),这使得它很容易出错(例如无效的JSON)。
这是你可能想要考虑的approach:
var anon = new
{
ApprovalFL = true,
// Any other properties here
objectID = song.SongID
};
var obj = JObject.FromObject(anon);
var objs = new List<JObject> { obj };
songIndexHelper.AddObjects(objs);
现在,由于anon
变量(例如,不必担心无效的JSON字符串),您可以获得一定程度的安全性,但也可以轻松地与Algolia API(根据JObject
记录)进行交互。