`
lindexi-gd
  • 浏览: 140126 次
社区版块
存档分类
最新评论

win10 uwp json

 
阅读更多

本文讲的是关于在uwp使用json的简单使用,json应用很多,因为我只是写简单使用,说的东西可能不对或者不符合每个人的预期。如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在我博客评论 http://blog.csdn.net/lindexi_gd

现在很多应用都是使用json

如果我们拿到一段json,想要把它变为我们C艹艹可以用的,我们需要先对json的类进行转换,其实很简单,我们在复制一段json

不需要我们对这json打,因为我们有vs,在我们的编辑,可以看到

这里写图片描述

我们复制完一段json,然后点击粘贴,就好了,自动生成

如果我们拿到一段json

{
  "results": [{
    "location": {
      "id": "WX4FBXXFKE4F",
      "name": "北京",
      "country": "CN",
      "path": "北京,北京,中国",
      "timezone": "Asia/Shanghai",
      "timezone_offset": "+08:00"
    },
    "daily": [{      
      "date": "2015-09-20",           
      "text_day": "多云",              
      "code_day": "4",                 
      "text_night": "晴",              
      "code_night": "0",              
      "high": "26",                
      "low": "17",                 
      "precip": "0",                 
      "wind_direction": "",           
      "wind_direction_degree": "255",   
      "wind_speed": "9.66",            
      "wind_scale": ""                 
    }, {
      "date": "2015-09-21",
      "text_day": "晴",
      "code_day": "0",
      "text_night": "晴",
      "code_night": "0",
      "high": "27",
      "low": "17",
      "precip": "0",
      "wind_direction": "",
      "wind_direction_degree": "157",
      "wind_speed": "17.7",
      "wind_scale": "3"
    }, {
    }],
    "last_update": "2015-09-20T18:00:00+08:00" 
  }]
}

我们弄个新的类,粘贴

    public class Thinw
    {

        public class Rootobject
        {
            public Result[] results { get; set; }
        }

        public class Result
        {
            public Location location { get; set; }
            public Daily[] daily { get; set; }
            public DateTime last_update { get; set; }
        }

        public class Location
        {
            public string id { get; set; }
            public string name { get; set; }
            public string country { get; set; }
            public string path { get; set; }
            public string timezone { get; set; }
            public string timezone_offset { get; set; }
        }

        public class Daily
        {
            public string date { get; set; }
            public string text_day { get; set; }
            public string code_day { get; set; }
            public string text_night { get; set; }
            public string code_night { get; set; }
            public string high { get; set; }
            public string low { get; set; }
            public string precip { get; set; }
            public string wind_direction { get; set; }
            public string wind_direction_degree { get; set; }
            public string wind_speed { get; set; }
            public string wind_scale { get; set; }
        }
    }

很快我们就得到了我们需要序列的类

接着我们使用Nuget

这里写图片描述

当然我还加上九幽的插件,九幽有几个插件可以获得我们应用数据,我们启动我们关闭,还有广告很好用

我们使用Nuget主要下载Newtonsoft.Json

我们转序可以使用

        public void Unencoding(string str)
        {
            var json = JsonSerializer.Create();
            Rootobject thinw = json.Deserialize<Rootobject>(new JsonTextReader(new StringReader(str)));
        }

如果我们需要把我们的类转为json

            var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("data", CreationCollisionOption.ReplaceExisting);
            using (TextWriter stream = new StreamWriter(await file.OpenStreamForWriteAsync()))
            {
                json.Serialize(stream, thinw);
            }

这样把我们的类保存在文件

如果觉得我做的简单,想要使用微软的Windows.Data.Json ,其实使用Newtosoft的才好

如果使用Windows.Data.Json

JsonArray root = JsonValue.Parse(jsonString).GetArray();  
for (uint i = 0; i < root.Count; i++) {  
    string name1 = root.GetObjectAt(i).GetNamedString("name");  
    string description1 = root.GetObjectAt(i).GetNamedString("description");  
    string link1 = root.GetObjectAt(i).GetNamedString("link");  
    string cat1 = root.GetObjectAt(i).GetNamedString("cat");  
    string image1 = root.GetObjectAt(i).GetNamedString("image");  
    var chan = new RootObject {  
        name = name1, cat = cat1, description = description1, image = image1, link = link1  
    };  
    obs_channels.Add(chan);  
}); 

如果属性多,基本上很多人会容易就打错,当然,可以先实例一个RootObject,然后使用新关键字,name去得到实例属性名称

当然在我们使用Json会遇到一些属性我们不要的,那么如何json忽略属性,其实很简单,在Newtosoft可以在属性加[JsonIgnore],因为这些比较乱,所以也不打算在这里说。

首先是我们的类,

  public class Thine
  {
      public string Property{set;get;}
      public string Ignore{set;get;}
  }

我们要把Property包含,但是不包含Ignore,简单的

  public class Thine
  {
      public string Property{set;get;}
      [JsonIgnore]
      public string Ignore{set;get;}
  }

但是有时候我们要包含很少,基本都是不包含的,那么如何只用包含,其实我们可以在类加[JsonObject(MemberSerialization.OptIn)]看到了OptIn,其实OptOut就是不包含一些,OptIn就是包含一些


  [JsonObject(MemberSerialization.OptIn)]
  public class Thine
  {
      [JsonProperty]
      public string Property{set;get;}
      public string Ignore{set;get;}
  }

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    UWP_WebApi发送获取数据

    ### UWP WebAPI 数据发送与获取详解 #### 一、概述 在现代应用程序开发中,特别是在 Windows 平台上,利用 Universal Windows Platform (UWP) 开发应用时,常常需要与 Web API 进行交互来获取或发送数据。本文将...

    Tidal-Unofficial-Win10:潮汐非官方Windows 10应用程序的源代码-windows source code

    它将克隆cpp rest sdk(用于json解析),date.h(用于日期表示)和UWP-LocalDB-CPP(用于本地存储) 建立项目 文件/src/Common/Api/Config.cpp被显式忽略。 您必须自己从Tidal获取api令牌并获取Tidal使用的资源和...

    编程Windows 10桌面:UWP Focus(N of 7)

    基于提供的标签“C# Win10 VS2013 UWP”,我们可以推断这个教程使用的是C#编程语言,并且是在Windows 10操作系统下进行开发,使用的IDE是Visual Studio 2013。尽管VS2013较旧,但仍然可以支持UWP开发。值得注意的是...

    Windows Terminal for win10

    **Windows Terminal for Win10** Windows Terminal 是微软为Windows 10操作系统推出的一款现代终端工具,它整合了多个命令行环境,如CMD、PowerShell、WSL(Windows Subsystem for Linux)等,提供了多标签、自定义...

    Sdp_Win10_Info_Last.zip

    Qt的Windows特定API可以帮助开发者充分利用Windows 10的功能,如UWP(通用Windows平台)支持,使应用程序能够运行在各种Windows设备上。 8. **设计模式**:在Qt中,经常使用如MVC(模型-视图-控制器)或MVVM(模型-...

    WindowsApplicationDriver

     这个工具是用来查看运行软件(uwp、win32、win form、wpf)的 UI 元素的 Name、ID、Text 等等。包含在 Windows SDK 中。  安装完 Visual Studio2015后,可以在 C盘下找到:C:\Program Files (x86)\Windows Kits\...

    twitter-to-tieba:把指定用户的推特转发到贴吧

    选择/随机回贴客户端(WAP,iPhone,安卓,WP,Win8UWP) 回贴失败自动重发(无法检测被吞/删),回贴与推文log 无需数据库唯一本地存储(使用json + csv存储日志) 发起人: 主程: 警告 使用本脚本可能会导致贴吧...

    Lottie-Windows:Lottie-Windows是用于在Windows 10上渲染Lottie动画的库(和相关工具)

    乐透视窗Lottie-Windows是一个用于在应用程序中本地渲染动画的库... Lottie-Windows包含3个相关产品: 库,用于解析和翻译 JSON文件命令行工具,用于生成要使用的C#或C ++代码而不是JSON 应用程序,用于预览JSON并生成

    像素鸟cocos2dx

    `proj.linux`则是Linux平台的项目文件,`proj.ios_mac`是针对iOS和Mac OS的项目,而`proj.win10`则对应Windows 10 UWP应用。这些目录包含了特定平台的编译设置和资源。 `proj.android-studio`和`proj.android`分别...

    Ipad、MAC、Windows协议,微信协议

    - Windows:Windows操作系统采用Microsoft的Win32 API和现代的Universal Windows Platform (UWP)。Windows上的协议包括COM(组件对象模型)、WCF(Windows Communication Foundation)和.NET Framework,以及...

    QQbqsoftware.rar_Windows编程_Video_

    在这个过程中,开发者会接触到如Win32 API、.NET Framework、UWP(通用Windows平台)以及最新的WinRT接口。 在Windows编程中,开发者需要理解窗口管理、消息队列、事件处理、多线程编程、内存管理和文件I/O等核心...

Global site tag (gtag.js) - Google Analytics