I was reading The Morning Brew and came across the entry below. I needed a break from writing my PowerShell Book, so I worked up the C# solution in PowerShell
Using JSON.net to consume the JSON Stack Overflow API – Jonathan Creamer takes a look at consuming JSON powered APIs using .NET code, looking at the JSON.NET library as probably the best way of consuming such data, and exploring its use consuming the StackOverflow API.
PowerShell v3 Solution
It’s worth comparing the number of lines it takes to get this done in C# vs. PowerShell. Put another way, Ceremony vs. Essence. Plus, this script is a one to one mapping to the C# done by Jonathan. I’m seamlessly integrating PowerShell with the .NET Framework. The only difference is I use the PowerShell Cmdlet ConvertFrom-Json. That does all the heavy lifting, converting the JSON to PowerShell objects with properties. No need to download a 3rd party DLL like JSON.net. Check out the results below.
function Get-StackOverflowUser ($id="110865") { $url = "http://api.stackoverflow.com/1.1/users/$id" $data = (New-Object Net.WebClient).DownloadData($url) $memoryStream = New-Object System.IO.MemoryStream(,$data) $decompress = New-Object ` System.IO.Compression.GZipStream($memoryStream,"Decompress") $reader = New-Object System.IO.StreamReader($decompress) $ret = $reader.ReadToEnd() ($ret | ConvertFrom-Json).Users } Get-StackOverflowUser 110865
Results
user_id : 110865
user_type : registered
creation_date : 1242960794
display_name : Doug Finke
reputation : 1666
email_hash : 94c48c63e7e63f5e713f7f7a5cdbcac0
last_access_date : 1328745843
website_url : http://dougfinke.com/blog/
location : New York, NY
about_me : Software Developer and Microsoft PowerShell MVP
question_count : 7
answer_count : 72
view_count : 70
up_vote_count : 72
down_vote_count : 2
accept_rate : 71
user_questions_url : /users/110865/questions
user_answers_url : /users/110865/answers
user_favorites_url : /users/110865/favorites
user_tags_url : /users/110865/tags
user_badges_url : /users/110865/badges
user_timeline_url : /users/110865/timeline
user_mentioned_url : /users/110865/mentioned
user_comments_url : /users/110865/comments
user_reputation_url : /users/110865/reputation
badge_counts : @{gold=0; silver=3; bronze=9}
Summary
If you’re running Windows 7, you can download PowerShell v3 CTP2 HERE. I hear the Windows 8 Consumer Preview could launch February 29. Windows 8 comes with PowerShell v3 and both are pretty slick.
Well, back to writing another chapter in my PowerShell book, “Building GUIs in PowerShell”.





{ 2 comments… read them below or add one }
Glad you read my article! I haven’t gotten to use PowerShell much before, so it’s cool to see a C# example converted into PS. Good stuff…
Great stuff as always, Doug! Even though I am not a developer, I am still looking forward to checking out your book when it comes out.