Json解析实例

时间:2021-08-29 22:47:26
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; }
        }     }
}