以变​​量为值的 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}