Computer Science Experimentation

Friday, August 10, 2012

Using System.Json in F#


The System.Json library is only available for Silverligh environment.

A beta version for .NET can be obtained from Nuget (http://nuget.org/packages/System.Json).

This is the documentation at MSDN:
(http://msdn.microsoft.com/en-us/library/system.json(v=vs.95).aspx)

The System.Json namespace provides standards-based support for the serialization of JavaScript Object Notation (JSON).

JSON is a lightweight, text-based data interchange format that is used to serialize structured data for transmission over networks. It has three primitive data types: string, number, and Boolean. It has two data structures: array and object. An array is an ordered collection of values, where the value can be a JSON primitive, object or array. An object is an unordered set of key/value pairs. The key is a string and the value, as with the array, can be a JSON primitive, object, or array.

In this documentation, the serialized textual representation of JSON is referred to as “text-based JSON” to distinguish it from the deserialized representation of JSON as a Common Language Runtime (CLR) type, which is referred to here as a “JSON CLR type” or as a “JSON CLR object” if we are referring to an instance of the type.

JSON CLR types represent the three text-based JSON primitives with the JsonPrimitive type. The JsonType() property indicates which primitive is contained in the type instance: String, Number, or Boolean.

JSON CLR types represent the two text-based structured types with JsonArray and JsonObject. A JsonArray is an ordered sequence of zero or more JsonValue objects. A JsonValue is the JSON CLR representation of a JSON text-based value, which can be either a primitive or structured type. A JsonObject is an unordered collection of zero or more String/JsonValue pairs, which represent the key/value pairs of the text-based JSON object.

F# Example:

//Using System.Json.dll
//By Celso Axelrud on 8/10/2012

open System
open System.Collections.Generic

#r @"C:\Users\caxelrud\Documents\Visual Studio 2012\Projects\WebSck_Host_2\packages\System.Json.4.0.20126.16343\lib\net40\System.Json.dll"
open System.Json

let j="[{\"a\":\"foo\",\"b\":\"bar\"},{\"a\":\"another foo\",\"b\":\"another bar\",\"c\":100}]"
let jsonObj = JsonValue.Parse(j)

jsonObj.Count;;
(*> val it : int = 2 *)

jsonObj.[0].["a"].ReadAs<string>()
(*> val it : string = "foo" *)

jsonObj.[1].["c"].ReadAs<int>();;
(*> val it : int = 100 *)

//New Json object
let jsonNew = new JsonObject(new KeyValuePair<string,JsonValue>("mainValue", JsonPrimitive(12345)))

jsonNew.ToString()
(*> val it : string = "{"mainValue":12345}" *)


No comments:

Post a Comment