2015-10-15 7 views
8

में जेएसओएन में कनवर्ट करते समय टैब चौड़ाई को कैसे बदला जाए मैं पावरहेल में एक JSON बना रहा हूं और मैं इसे बनाते समय एक कस्टम टैब चौड़ाई सेट करना चाहता हूं (डिफ़ॉल्ट 4 सफेद रिक्त स्थान के बजाय मैं केवल 2 सफेद रिक्त स्थान सेट करना चाहता हूं) ।पावरहेल

मैं यह कर रहा हूं क्योंकि:

  • वास्तविक JSON (नहीं एक नीचे दिए नमूने में प्रस्तुत) बहुत बड़ी (100k + पंक्तियाँ) और यदि archieved नहीं, यह आकार बहुत बड़ी है है; यदि मैं टैब चौड़ाई को कम करता हूं तो आकार में कमी उल्लेखनीय है।
  • वास्तविक JSON की 5+ नोड्स की गहराई है!
  • मैं उपयोग नहीं कर सकता - जेएसओएन को मानव पठनीय होने की आवश्यकता है क्योंकि
  • हां, मैं सहमत हूं, अगर संग्रहीत है, तो इसका आकार नाटकीय रूप से कम हो गया है, लेकिन मुझे इसकी भी अनारक्षित आवश्यकता है।

नमूना कोड:

$object = New-Object PSObject 
Add-Member -InputObject $object -MemberType NoteProperty -Name Phone -Value "SomePhone" 
Add-Member -InputObject $object -MemberType NoteProperty -Name Description -Value "Lorem ipsum dolor.." 
Add-Member -InputObject $object -MemberType NoteProperty -Name Price -Value 99.99 

$object | ConvertTo-Json 

टैब चौड़ाई = 4 सफेद रिक्ति के साथ परिणाम।

{ 
    "Phone": "SomePhone", 
    "Description": "Lorem ipsum dolor..", 
    "Price": 99.99 
} 

मैं संपीड़न की कोशिश की लेकिन यह संपीड़न स्तर पर नियंत्रण (कैसे आक्रामक संपीड़न होना चाहिए)

$object | ConvertTo-Json -Compress 

परिणाम संकुचित, स्पष्ट रूप से नहीं मिल जाता। टैब चौड़ाई = 2 सफेद रिक्ति के साथ परिणाम:

{"Phone":"SomePhone","Description":"Lorem ipsum dolor..","Price":99.99} 

क्या मैं हासिल करने की कोशिश कर रहा हूँ।

{ 
    "Phone": "SomePhone", 
    "Description": "Lorem ipsum dolor..", 
    "Price": 99.99 
} 

क्या मैं अब तक की कोशिश की है नीचे छद्म कोड में है। मैं अभी भी लूप में हूँ। कृपया मुझे वहाँ से बाहर निकलना :)

while (1) { 
    Google, StackOverflow 
    Try Stuff found 
    Tweak stuff found 

    if (Correct answer) { 
     break 
    } 
} 

उत्तर

3

निम्नलिखित कोड मांगपत्र के आकार को आधा होगा:

$json = @" 
{ 
    "Phone": "SomePhone", 
    "Description": "Lorem ipsum dolor..", 
    "Price": 99.99 
} 
"@ 

($json -split '\r\n' | 
% { 
    $line = $_ 
    if ($_ -match '^ +') { 
    $len = $Matches[0].Length/2 
    $line = ' ' * $len + $line.TrimStart() 
    } 
    $line 
}) -join "`r`n" 
+0

मैं (> = 3 नोड गहराई) JSON एक 'गहरा' के साथ परीक्षण किया है और यह काम करने लगता है। धन्यवाद! –