Page 1 of 1

Json.net

Posted: Tue Jul 28, 2015 3:36 pm
by lix2k3
Another 3rd party tool question....will Json.net be compatible with cshtml5?

Or is there access to System.Runtime.Serialization.Json?

Re: Json.net

Posted: Thu Jul 30, 2015 9:28 am
by JS-Support @Userware
Hi lix2k3,

At the moment there is no access to System.Runtime.Serialization.Json, but built-in JSON support is on the roadmap of CSHTML5.

As fas as JSON.NET is concerned, we have not tried to port its source code to CSHTML5 yet, but maybe someone in the community can try to do so.

It shouldn't be too difficult for someone in the community to implement JSON support for CSHTML5. For example, with the current version of CSHTML5 (beta 4), it is already possible to use the "JSIL.JSON.Parse" JavaScript method (defined in "Output\Libraries\JSIL.JSON.js") to transform a JSON string into a C# object made of nested List<object> and Dictionary<string,object>. Here is an example of C# code that does so. To test it, create a new empty CSHTML5 project and paste the following code into the MainPage constructor:

Code: Select all

if (CSharpXamlForHtml5.Environment.IsRunningInJavaScript)
{
    string jsonToParse = "{\"result\":true,\"count\":1}";
    Dictionary<string, object> deserializedObject = JSIL.Verbatim.Expression("JSIL.JSON.Parse($0)", jsonToParse);
    string result = deserializedObject["result"].ToString();
    MessageBox.Show(result);
    string count = deserializedObject["count"].ToString();
    MessageBox.Show(count);
}


Please note that the code will only be executed when your app is run inside the web browser, not inside the Simulator.

By the way, in case a reader is wondering how the "JSIL.Verbatim.Expression" method works, here is a short explanation that we will soon add to the CSHTML5 documentation. It is a very powerful feature that lets you call JavaScript code from within C#. Here, the method "JSIL.JSON.Parse" is a JavaScript method. To call it from C#, we need to use "JSIL.Verbatim.Expression", which keeps the string "as is" during the conversion from C# to JavaScript. Please note that "$0" is replaced AT COMPILE TIME (not at runtime) by the JS-equivalent code of the first argument (in this case, it is replaced by the JS code that allows to read "jsonToParse" at runtime). You can see the result by looking at the generated JavaScript code. Please note that because the replacement is done at compile time, the first argument of the "JSIL.Verbatim.Expression" method must be a constant expression (it cannot be a variable). The other arguments can be variables.

JS-Support

Re: Json.net

Posted: Thu Jul 30, 2015 12:18 pm
by lix2k3
I wasn't aware of that javascript functionality. Thanks for that.