• 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; }
            }
     
        }
    }
    
  • 相关阅读:
    Linux mail 命令使用
    django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>
    django admin后台提示没有static样式相关的文件
    nginx+uwsgi<django web环境的搭建>
    CentOS 6.5升级Python和安装IPython
    关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思
    记一次创建LVM的日志记录
    django TEMPLATES
    Only the sqlmigrate and sqlflush commands can be used when an app has migrations.
    rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>
  • 原文地址:https://www.cnblogs.com/Robert-huge/p/5924288.html
Copyright © 2020-2023  润新知