Json解析实例

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Windows.Controls;
using System.Windows.Media;
using ESRI.ArcGIS.Client;
using ESRI.ArcGIS.Client.Geometry;
using ESRI.ArcGIS.Client.Symbols;
using System.Globalization;
 
 
 
namespace AddGraphics
{
 
    public partial class MainWindow : UserControl
    {
        private static ESRI.ArcGIS.Client.Projection.WebMercator mercator =
            new ESRI.ArcGIS.Client.Projection.WebMercator();
 
 
        public MainWindow()
        {
            // License setting and ArcGIS Runtime initialization is done in Application.xaml.cs.
 
            InitializeComponent();
 
            AddMarkerGraphics();
            //AddPictureMarkerAndTextGraphics();
            //AddLineGraphics();
            //AddPolygonGraphics();
 
        }
 
        private void AddMarkerGraphics()
        {
            string jsonCoordinateString = "{"Coordinates":[{"X":13.1,"Y":55.59},{"X":72.83,"Y":18.97},{"X":55.43,"Y":34.3}]}";
            CustomCoordinateList coordinateList = DeserializeJson<CustomCoordinateList>(jsonCoordinateString);
 
            GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
 
            for (int i = 0; i < coordinateList.Coordinates.Count; i++)
            {
                Graphic graphic = new Graphic()
                {
                    Geometry = mercator.FromGeographic(new MapPoint(coordinateList.Coordinates[i].X, coordinateList.Coordinates[i].Y)),
                    Symbol = i > 0 ? LayoutRoot.Resources["RedMarkerSymbol"] as Symbol : LayoutRoot.Resources["BlackMarkerSymbol"] as Symbol
                };
                graphicsLayer.Graphics.Add(graphic);
            }
 
 
 
        }
 
        internal static T DeserializeJson<T>(string json)
        {
            T objectInstance = Activator.CreateInstance<T>();
            System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(System.Text.Encoding.Unicode.GetBytes(json));
            System.Runtime.Serialization.Json.DataContractJsonSerializer jsonSerializer =
                new System.Runtime.Serialization.Json.DataContractJsonSerializer(objectInstance.GetType());
            objectInstance = (T)jsonSerializer.ReadObject(memoryStream);
            memoryStream.Close();
            return objectInstance;
        }
 
 
 
 
 
        [DataContract]
        public class CustomCoordinateList
        {
            [DataMember]
            public List<CustomCoordinate> Coordinates = new List<CustomCoordinate>();
        }
 
        [DataContract]
        public class CustomCoordinate
        {
            public CustomCoordinate() { }
            public CustomCoordinate(double x, double y)
            {
                this.X = x;
                this.Y = y;
            }
 
            [DataMember]
            public double X { get; set; }
            [DataMember]
            public double Y { get; set; }
        }
 
    }
}
原文地址:https://www.cnblogs.com/Robert-huge/p/5924288.html