开发者

Generic JSON parser in .NET / WPF?

I've read lots of tutorials on how to deserialize a JSON object to an object of a particular using DataContractJsonSerializer. However, I'd like to deserialize my object to a Dictionary consisting of either Strings, Arrays or Dictionaries, such as System.Json does with SilverLight when I say JsonObj开发者_如何学Cect.Parse(myJSONstring).

Is there an equivalent to System.Json that I can use in my WPF project?

(just a short background: I'm fetching JSON objects that have way to much info, and I just want to use a little bit to fill out a String array)

Cheers

Nik


Just use .NET's built-in JavaScriptSerializer.

var jss = new JavaScriptSerializer();
var data = jss.Deserialize<dynamic>(jsonString);

//"data" actually implements IDictionary<string, object>
var p1 = data["Property1"];
var p2 = data["Property2"];

Don't forget to reference "System.Web.Extensions"


Take a look at the C# section (scoll to the bottom) of http://json.org/, they have several implementations of serializers and parsers that should help.


I successfully use JayRock: http://jayrock.berlios.de/

public class JayRockMarshaller : IMarshaller
{
    public ICollection Read(string text)
    {
        return (ICollection)new ImportContext().Import(new JsonTextReader(new StringReader(text)));
    }

    public string Write(ICollection objectToMarshal)
    {
        var writer = new StringWriter();
        new ExportContext().Export(objectToMarshal, new JsonTextWriter(writer));
        return writer.ToString();
    }
}

Works for both Dictionaries and Lists like a dream.


Also look at https://github.com/jlarsson/Kiwi.Json it handles all sorts of datatypes and you can easily create your own converter if the built in doesn't fit.

There's blog where you can find samples on this for example: http://dancewithcode.wordpress.com/2012/03/24/case-study-custom-json-converter-for-datatable/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜