2016-08-23 2 views
0

Beschreibung Verschachtelte Arrays und Objekte werden nicht ordnungsgemäß


Mit ConvertTo-Json in Powershell JSon umgewandelt, ich versuche, das folgende Objekt zu konvertieren:

$richmessage = @{ 
    attachments = @(
     @{ 
      "mrkdwn_in" = @("text"; "pretext";); 
      "title" = "title here"; 
      "title_link" = "http://somelinkhere/"; 
      "fallback" = "Summary of the attachment"; 
      "text" = "message"; 
      "color" = "red";  

     })  
} 

write-host(ConvertTo-Json -InputObject $richmessage) 

ich erwartet hatte diese Ausgabe zu erhalten:

{ 
    "attachments": [ 
        { 
         "text": "message", 
         "fallback": "Summary of the attachment", 
         "mrkdwn_in": ["text" "pretext"], 
         "color": "red", 
         "title": "title here", 
         "title_link": "http://somelinkhere/" 
        } 
       ] 
} 

Aber die tatsächliche Ausgabe ist:

{ 
    "attachments": [ 
        { 
         "text": "message", 
         "fallback": "Summary of the attachment", 
         "mrkdwn_in": "text pretext", 
         "color": "red", 
         "title": "title here", 
         "title_link": "http://somelinkhere/" 
        } 
       ] 
} 

Hinweise


  • Ich möchte die "mrkdwn_in": "text pretext"mrkdwn_in:["text", "pretext"]
  • sein, wenn wir $richmessage = @{ "mrkdwn_in" = @("text"; "pretext"); } nehmen diese das Array erzeugen, wie erwartet, aber wenn das Array wie folgt verschachtelt ist: $richmessage = @{ attachments = @(@{"mrkdwn_in" = @("text"; "pretext"); }) } ; es stellt die Saiten dar.
  • Ich verwende dies, um eine Rich-Nachricht an Slack zu senden und Markierungen in den Anhängen zulassen. (Siehe this link)

Frage


Wie kann ich das erreichen?

Antwort

0

Versuchen Hinzufügen Array-Wert für das Objekt separat

$richmessage= $richmessage["attachments"][0]["mrkdwn_in"] = @("text", "pretext"); 

Voll Beispiel:

$richmessage = @{ 
    attachments = @(
     @{ 
      "mrkdwn_in" = ""; 
      "title" = "title here"; 
      "title_link" = "http://somelinkhere/"; 
      "fallback" = "Summary of the attachment"; 
      "text" = "message"; 
      "color" = "red";  

     })  
} 
+0

Schon probiert, gibt mir immer noch das gleiche Ergebnis: ' "mrkdwn_in": "Text Vorwand"'. –

+0

Ich habe meine Antwort korrigiert. – SergeDirect

+0

Danke, das habe ich gesehen, aber dieses ist ein Syntaxfehler (ich verwende es unter Windows PowerShell ISE). Denken Sie daran, dass dies Powershell-Skript ist, nicht JavaScript oder eine andere Skriptsprache. –

Verwandte Themen