以变量为值的 JObject 解析数据
JObject Parse Data with a variable as the value
当我需要通过变量设置其中一个值时,我正在尝试破译使用 JObject Parse 的正确语法。这是为了使用 Algolia 将新对象推送到我的搜索索引。
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":"true",
""objectID"":"'+Accepted.Value+'"}"));
我从我的函数参数中收到 Accepted.Value
。例如,Accepted.Value 可能等于 98。此外,true
的格式应为布尔值而不是字符串。以上是我的尝试。我应该如何修正我的语法?
我正在关注来自 Algolia 的文档:https://www.algolia.com/doc/api-reference/api-methods/partial-update-objects/
有关更多上下文,请参阅函数中的上述行:
public ActionResult Index(int? Accepted, int? Denied)
{
var accountInfo = EntityDataAccess.GetAccountInfoByUserID(User.Identity.GetUserId());
if(accountInfo == null || accountInfo.AdminFL == false || accountInfo.LabelFL == true)
{
return RedirectToAction("Index", "Home");
}
else
{
if(Accepted != null)
{
EntityDataAccess.AcceptSong(Accepted.Value);
var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>;
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":""true"",
""objectID"":""Accepted.Value""}"));
}
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":""true"",
""objectID"":""Accepted.Value""}"));
应该是:
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":true,
""objectID"":" +Accepted.Value+ "}"));
关键是使用 +
连接 Accepted
的值,而不是将 true
括在引号中。
我建议的另一种方法是根本不使用字符串。考虑以下方法:
var bob = new { ApprovalFL = true, objectID = Accepted.Value};
var obj = JObject.FromObject(bob);
songIndexHelper.PartialUpdateObject(obj);
这应该会生成您要查找的内容:
String json = "{\"ApprovalFL\":true,\"objectID\":" + Accepted.Value.ToString() + "}";
即:
{"ApprovalFL":true,"objectID":98}
当我需要通过变量设置其中一个值时,我正在尝试破译使用 JObject Parse 的正确语法。这是为了使用 Algolia 将新对象推送到我的搜索索引。
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":"true",
""objectID"":"'+Accepted.Value+'"}"));
我从我的函数参数中收到 Accepted.Value
。例如,Accepted.Value 可能等于 98。此外,true
的格式应为布尔值而不是字符串。以上是我的尝试。我应该如何修正我的语法?
我正在关注来自 Algolia 的文档:https://www.algolia.com/doc/api-reference/api-methods/partial-update-objects/
有关更多上下文,请参阅函数中的上述行:
public ActionResult Index(int? Accepted, int? Denied)
{
var accountInfo = EntityDataAccess.GetAccountInfoByUserID(User.Identity.GetUserId());
if(accountInfo == null || accountInfo.AdminFL == false || accountInfo.LabelFL == true)
{
return RedirectToAction("Index", "Home");
}
else
{
if(Accepted != null)
{
EntityDataAccess.AcceptSong(Accepted.Value);
var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>;
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":""true"",
""objectID"":""Accepted.Value""}"));
}
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":""true"",
""objectID"":""Accepted.Value""}"));
应该是:
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":true,
""objectID"":" +Accepted.Value+ "}"));
关键是使用 +
连接 Accepted
的值,而不是将 true
括在引号中。
我建议的另一种方法是根本不使用字符串。考虑以下方法:
var bob = new { ApprovalFL = true, objectID = Accepted.Value};
var obj = JObject.FromObject(bob);
songIndexHelper.PartialUpdateObject(obj);
这应该会生成您要查找的内容:
String json = "{\"ApprovalFL\":true,\"objectID\":" + Accepted.Value.ToString() + "}";
即:
{"ApprovalFL":true,"objectID":98}