2015-01-21 16 views
13

Tôi muốn monkeypatch một môi trường PowerShell 2.0, nơi nâng cấp lên 3.0 là không thể tại thời điểm này.PowerShell 2.0 ConvertFrom-Json và ConvertTo-Json thực hiện

Tôi đang tìm triển khai tập lệnh PowerShell 2.0 của lệnh ghép ngắn ConvertFrom-Json và lệnh ghép ngắn ConvertTo-Json trong PowerShell 3.0.

Tôi quan tâm nhất đến số ConvertFrom-Json, nhưng ConvertTo-Json cũng sẽ rất tuyệt.

+2

cho bất kỳ ai đã bỏ phiếu để đóng để không có chủ đề, tôi hiểu bạn không. – x0n

+2

Anh/cô ấy có thể đọc điều này như là một "lệnh chữ", mà tôi đồng ý một phần. Để sử dụng thuật ngữ ITIL: đây là yêu cầu dịch vụ (muốn tập lệnh), không phải là sự cố (mẫu tập lệnh có lỗi). :) –

+1

@FrodeF., Để thêm một số thông tin về yêu cầu của tôi, điều này chắc chắn là 'thứ tự kịch bản' vì tôi không muốn viết một phiên bản tuân thủ JSON. Tôi đã hy vọng rằng có một hội đồng có thể được nhập khẩu và tận dụng. Tôi đã hy vọng có một giải pháp được biết đến cho vấn đề monkeypatching, chứ không phải là tôi viết và gỡ lỗi kịch bản mới của riêng mình. Nếu điều này vẫn còn ngoài chủ đề, tôi có thể di chuyển nó đến một nơi khác ... –

Trả lời

30
function ConvertTo-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 
    return $ps_js.Serialize($item) 
} 

function ConvertFrom-Json20([object] $item){ 
    add-type -assembly system.web.extensions 
    $ps_js=new-object system.web.script.serialization.javascriptSerializer 

    #The comma operator is the array construction operator in PowerShell 
    return ,$ps_js.DeserializeObject($item) 
} 
+4

Đây là một chức năng ConvertFrom, dựa trên 'hàm ConvertFrom-Json20 ([đối tượng] $ item) { bổ sung kiểu hệ thống thu thập.web.extensions $ ps_js = new-object system.web.script.serialization.javascriptSerializer return $ ps_js.DeserializeObject ($ item) } 'Định dạng kém, xin lỗi – Geoff

+1

Cảm ơn Geoff! Tôi đã thêm vào câu trả lời –

+1

Nếu bạn chưa cài đặt .NET 3.5, bạn sẽ gặp lỗi:" Loại bổ sung: Không thể tải tệp hoặc lắp ráp 'Hệ thống .Web.Extensions, Phiên bản = 3.5.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 hoặc một trong những người phụ thuộc của nó S. Hệ thống không thể tìm thấy các tập tin được chỉ định. "... –

2

Bạn có thể xem qua số powershelljson.codeplex.com Không bao giờ thử.

Nếu điều đó không có tác dụng, thì có thể bạn sẽ cần phải tự mình viết. Bạn có thể viết một wrapper sử dụng Json.Net hoặc Web.Extensions (sample) để thực hiện một số công việc.

+0

Liên kết mã hóa trông giống như những gì tôi cần, cảm ơn! BTW, tôi đã dành hàng giờ với google cố gắng tìm một thứ tương tự, nhưng nó chỉ muốn nói về powershell v3 :-( –

+0

BTW, tôi sẽ thử những ngày mai và chấp nhận nếu nó hoạt động –

1

Tôi không thể bình luận về currently top rated post above, tuy nhiên bạn có thể chạy các lệnh registry (more details):

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 
    reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1 /f 

cho phép trên ConvertTo-Json20ConvertTo-Json20 chức năng để làm việc nếu bạn đang nhận được lỗi:

Add-Type : Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 or one of its dependencies. The system cannot find the file specified. " 
Các vấn đề liên quan