2012-08-27 16 views
13

पार्स करने मैं इस फ़ाइल जो मैं PowerShell के साथ पढ़ने के लिए करना चाहते हैं:"अवैध सरणी पारित कर दिया" जब JSON

var myMap = 
[ 
    { 
    "name": "JSON Example", 
    "attr": "Another attribute" 
    } 
] 

मेरे PowerShell v3 कोड:

$str = Get-Content $file | Select -Skip 1; 
$str | ConvertFrom-Json; 

लेकिन मैं हमेशा इस त्रुटि हो रही है :

ConvertFrom-Json : Invalid array passed in, ']' expected. (1): [ 
At S:\ome\Path\script.ps1:60 char:8 
+ $str | ConvertFrom-Json; 
+  ~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [ConvertFrom-Json], ArgumentException 
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand 

अगर मैं कॉपी और JSON कोड कोड में मैन्युअल रूप से पेस्ट, सब कुछ ठीक काम कर रहा है:

'[ 
    { 
    "name": "JSON Example", 
    "attr": "Another attribute" 
    } 
]' | ConvertFrom-Json; 

उत्तर

24

ConvertFrom-Json लिए पाइपिंग से पहले Out-String को पाइप के लिए प्रयास करें:

Get-Content $file | Select -Skip 1 | Out-String | ConvertFrom-Json 

अपने काम करने के उदाहरण में JSON कोड एक स्ट्रिंग, जबकि गैर काम उदाहरण लाइनों का एक संग्रह रिटर्न है। Out-String पर पिपिंग संग्रह को एक स्ट्रिंग में परिवर्तित करता है, जो इनपुट ऑब्जेक्ट पैरामीटर स्वीकार करता है।

+0

अब यह काम करता है! स्पष्टीकरण के लिए धन्यवाद! मैं आपका जवाब 4 मिनट में स्वीकार करूंगा। – ComFreek

-1

एक और जवाब यह है कि यह भी काम करता है: GC -raw <FILE> का उपयोग जो स्ट्रिंग के रूप में में पारित करेंगे

संबंधित मुद्दे