文档章节

WP开发:使用JSON格式传输应用数据

一曲
 一曲
发布于 2014/04/23 11:13
字数 456
阅读 144
收藏 0
点赞 0
评论 0

JSON的轻便小巧是不用多说的,自已在一个WP应用中尝试使用C#解析JSON格式时遇见了一个小问题,记录一下吧。

这个应用使用的是PHP后台,使用json_encode()输出后,通过WP应用接收,这里不说怎么接收的了,WebClient和HttpWebRequest都可以,下面给出我从字符串中解析出Object的方法。

引入System.Runtime.Serialization.Json库

public static T Deserialize<T>(string jsonString)
{
    using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
        return (T)serializer.ReadObject(ms);
    }
}

这个方法是没有问题的,网上搜到大多也是这个答案。

使用:

比如这里要解析下面的JSON字符串

<?php
echo json_encode(array(
                    'name'=>'小明',
                    'age'=>16
                    ));

JSON输出字符串:[{"name":"小明","age":16}]

先要在WP应用里定义一个类

public class UserInfo
{
    public string name { get; set; }
    public int age { get; set; }
}

然后接收到字符串str的地方

UserInfo user = Deserialize<UserInfo>(str);

这里一般也应该没什么问题,但我的问题就出现在了这里,取得的user总是为null,或者报错。于是就查找各方面的资料,历尽千辛万苦,下面就给大家分亨。原因就是JSON在传输中中文转换成了Unicode字符,所以导致不能正常解析

string json = Regex.Unescape(str);
UserInfo user = Deserialize<UserInfo>(json);

问题解决。

这是前段时间遇到的问题了,问题虽然小,碰上了也是很郁闷的,其中更细节的地方也记不太清楚,看客们将就着点,能解决你的问题也是极好的~


© 著作权归作者所有

共有 人打赏支持
一曲
粉丝 11
博文 31
码字总数 9713
作品 0
深圳
高级程序员
当 Windows Azure 碰到了 Windows Phone 7:推送通知服务概述

本文将介绍 Windows Phone 7 上的一个新功能-Push Notification Service,一个由应用程序供货商与手机用户进行沟通的管道,服务应用程序可以利用这个功能将讯息广播给所有订阅此服务的手机使...

junwong ⋅ 2012/02/27 ⋅ 0

JSONP让JavaScript也可以调用API

API接口的数据格式都是标准的JSON格式,这样方便数据操作。 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)。 所以其 实JSON期初是为了方便JavaScript操作而定义的一种数...

tngou ⋅ 2014/01/15 ⋅ 0

Json那点事儿

1.JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON以key-value的形式提供了很好的读写,在web开发中之前用过xml来进行数据的交互和传输, 但xml的数据结构比较复...

陈小扁 ⋅ 2016/04/10 ⋅ 1

基于ASP.NET 3.5 Web Service 的JSON扩展应用

如果你经常使用ASP.NET Web服务,那么你便知道他们可以以不同的方法进行通信。可以使用SOAP 1.1/1.2,HTTP POST和HTTP GET的一些支持的协议调用ASP.NET Web服务。我们可以通过HTTP POST或GET...

高阳 ⋅ 2009/08/26 ⋅ 0

使用 jQuery 简化 Ajax 开发

JSON 入门指南 street:Chaoyang Roadpostcode:100025(整数) } var j={"name":"Michael","address": };document.write(j.name);document.write(j.address.city);} } method: "get",onSucce......

晨曦之光 ⋅ 2012/03/09 ⋅ 0

JSON 入门指南

简介: JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务...

红薯 ⋅ 2008/11/28 ⋅ 7

Ajax中的XML与JSON的区别与联系

  1.定义介绍   (1).XML定义   扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己...

微软攻城狮 ⋅ 2017/02/28 ⋅ 0

xml与json

1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进...

ok绷forever ⋅ 2016/07/21 ⋅ 0

Json 与 XmL对比

JSON与XML的区别比较 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用...

阿联酋挖石油 ⋅ 2015/09/15 ⋅ 0

基于 Swoole 的内网穿透 - YurunProxy

首先感谢 Swoole 为我们广大 phper 带来第二春,可以非常方便地开发各种网络通信应用! YurunProxy 是基于 Swoole 的内网穿透,支持本地微信开发、Web开发,让外网能够访问到! 这是宇润这周...

宇润 ⋅ 02/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部