JObject使用变量作为值

时间:2017-12-17 20:29:42

标签: c# asp.net json algolia

当我需要一个由变量设置的值时,我试图破译使用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""}"));
        }

2 个答案:

答案 0 :(得分:1)

这应该产生你想要的东西:

String json = "{\"ApprovalFL\":true,\"objectID\":" + Accepted.Value.ToString() + "}";

是:

{"ApprovalFL":true,"objectID":98}

答案 1 :(得分:0)

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);