2017-12-17 4 views
0

Ich versuche, die richtige Syntax für die Verwendung von JObject Parse zu entschlüsseln, wenn ich einen der Werte durch eine Variable festgelegt haben muss. Dies ist für die Verwendung von Algolia, um ein neues Objekt in meinen Suchindex zu schieben.JObject Parse Daten mit einer Variablen als Wert

songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":"true", 
         ""objectID"":"'+Accepted.Value+'"}")); 

Ich erhalte Accepted.Value von meinem Funktionsargument. Zum Beispiel könnte Accepted.Value etwa 98 entsprechen. Außerdem sollte true als Boolean anstelle einer Zeichenfolge formatiert werden. Das obige ist mein Versuch. Wie soll ich meine Syntax korrigieren?

Ich folge dieser Dokumentation von Algolia: https://www.algolia.com/doc/api-reference/api-methods/partial-update-objects/

Weitere Kontext, hier ist die obige Zeile in der Funktion:

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

Antwort

0
songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":""true"", 
           ""objectID"":""Accepted.Value""}")); 

sein sollte:

songIndexHelper.PartialUpdateObject(JObject.Parse(@"{""ApprovalFL"":true, 
    ""objectID"":" +Accepted.Value+ "}")); 

Der Schlüssel besteht darin, + zu verwenden, um den Wert vonzu verketten, und nicht wrap true in Anführungszeichen.

Ein anderer Ansatz, den ich vorschlagen würde, ist keine Strings überhaupt verwenden. Betrachten wir einen Ansatz, wie:

var bob = new { ApprovalFL = true, objectID = Accepted.Value}; 
var obj = JObject.FromObject(bob); 
songIndexHelper.PartialUpdateObject(obj); 
+0

@mjwills ah einfach genug, vielen Dank für die Hilfe :) –

+1

knifflige Zitate bringen mich immer durcheinander! –

1

sollten diese produzieren, was Sie suchen:

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

das ist:

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

danke für die Angabe der boolean. werfe ich einfach diese String-Variable dorthin, wo ich meine Rasierersyntax in 'JObject.Parse' habe? –

+0

Große Antwort @TommsoBelluzzo. – mjwills

Verwandte Themen