Deserialize ESRI Geocode JSON Response to your Class using
DataContractJsonSerializer.
Usage
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Runtime.Serialization;
using System.ServiceModel.Web;
using System.Runtime.Serialization. Json;
using System.IO;
namespace SynchronusTest
{
class serializerClass
{
public geocoder FromJSON(string jsonResponse)
{
geocoder what = new geocoder();
what = Deserialize(
jsonResponse);
return what;
}
private static T Deserialize(string json)
{
var instance = Activator.CreateInstance();
using (var ms = new MemoryStream(Encoding.Unicode. GetBytes(json)))
{
var serializer = new DataContractJsonSerializer( instance.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
[DataContract]
public class geocoder
{
[DataMember(Name = "spatialReference")]
public spatialReference spatialReference { get; protected set; }
[DataMember(Name = "candidates")]
public List candidates { get; protected set; }
}
[DataContract]
public class Whatever
{
[DataMember(Name = "address")]
public string address { get; protected set; }
[DataMember(Name = "score")]
public string score { get; protected set; }
[DataMember(Name = "attributes")]
public string attributes { get; protected set; }
[DataMember(Name = "location")]
public location location { get; protected set; }
}
[DataContract]
public class spatialReference
{
[DataMember(Name = "wkid")]
public int wkid { get; protected set; }
}
[DataContract]
public class location
{
[DataMember(Name = "x")]
public double x { get; protected set; }
[DataMember(Name = "y")]
public double y { get; protected set; }
}
}
Usage
SynchronusTest.serializerClass deserializerTest = new SynchronusTest. serializerClass();
string Json = @"{""spatialReference"" : {""wkid"" : 4326},""candidates"" : [{""address"" : ""Rochester, Ab"",""location"" : {""x"" : -113.46582113964837,""y"" : 54.36887554118249},""score"" : 68,""attributes"" : { }}]}";
deserializerTest.
FromJSON (Json);