zoukankan      html  css  js  c++  java
  • 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; }
            }
     
        }
    }
    
  • 相关阅读:
    Swift的闭包(一):闭包简介、闭包表达式的优化
    iOS 用户体验之音频
    【iOS】Core Bluetooth
    【iOS】3D Touch
    golang中channel的超时处理
    Objective-C 中的 BOOL
    2015年总结
    load vs. initialize
    正则表达式
    When does layoutSubviews get called?
  • 原文地址:https://www.cnblogs.com/Robert-huge/p/5924288.html
Copyright © 2011-2022 走看看