本文讲的是关于在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
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 数据发送与获取详解 #### 一、概述 在现代应用程序开发中,特别是在 Windows 平台上,利用 Universal Windows Platform (UWP) 开发应用时,常常需要与 Web API 进行交互来获取或发送数据。本文将...
它将克隆cpp rest sdk(用于json解析),date.h(用于日期表示)和UWP-LocalDB-CPP(用于本地存储) 建立项目 文件/src/Common/Api/Config.cpp被显式忽略。 您必须自己从Tidal获取api令牌并获取Tidal使用的资源和...
基于提供的标签“C# Win10 VS2013 UWP”,我们可以推断这个教程使用的是C#编程语言,并且是在Windows 10操作系统下进行开发,使用的IDE是Visual Studio 2013。尽管VS2013较旧,但仍然可以支持UWP开发。值得注意的是...
**Windows Terminal for Win10** Windows Terminal 是微软为Windows 10操作系统推出的一款现代终端工具,它整合了多个命令行环境,如CMD、PowerShell、WSL(Windows Subsystem for Linux)等,提供了多标签、自定义...
Qt的Windows特定API可以帮助开发者充分利用Windows 10的功能,如UWP(通用Windows平台)支持,使应用程序能够运行在各种Windows设备上。 8. **设计模式**:在Qt中,经常使用如MVC(模型-视图-控制器)或MVVM(模型-...
这个工具是用来查看运行软件(uwp、win32、win form、wpf)的 UI 元素的 Name、ID、Text 等等。包含在 Windows SDK 中。 安装完 Visual Studio2015后,可以在 C盘下找到:C:\Program Files (x86)\Windows Kits\...
选择/随机回贴客户端(WAP,iPhone,安卓,WP,Win8UWP) 回贴失败自动重发(无法检测被吞/删),回贴与推文log 无需数据库唯一本地存储(使用json + csv存储日志) 发起人: 主程: 警告 使用本脚本可能会导致贴吧...
乐透视窗Lottie-Windows是一个用于在应用程序中本地渲染动画的库... Lottie-Windows包含3个相关产品: 库,用于解析和翻译 JSON文件命令行工具,用于生成要使用的C#或C ++代码而不是JSON 应用程序,用于预览JSON并生成
`proj.linux`则是Linux平台的项目文件,`proj.ios_mac`是针对iOS和Mac OS的项目,而`proj.win10`则对应Windows 10 UWP应用。这些目录包含了特定平台的编译设置和资源。 `proj.android-studio`和`proj.android`分别...
- Windows:Windows操作系统采用Microsoft的Win32 API和现代的Universal Windows Platform (UWP)。Windows上的协议包括COM(组件对象模型)、WCF(Windows Communication Foundation)和.NET Framework,以及...
在这个过程中,开发者会接触到如Win32 API、.NET Framework、UWP(通用Windows平台)以及最新的WinRT接口。 在Windows编程中,开发者需要理解窗口管理、消息队列、事件处理、多线程编程、内存管理和文件I/O等核心...