android中网络数据传输是经常被用到的,通常我们使用xml或者json,而json更加轻量,便捷,我们使用的更多。我自己在项目中使用很多,今天就说说android中怎么去解析JSON,帮助自己总结内容,同时帮助别人少走弯路。
JSON语法
首先看JSON的语法和结构,这样我们才知道怎么去解析它。JSON语法时JavaScript对象表示语法的子集。
JSON的值可以是:
数字(整数或者浮点数)
字符串(在双引号内)
逻辑值(true 或 false)
数组(使用方括号[]包围)
对象( 使用花括号{}包围)
null
JSON中有且只有两种结构:对象和数组。
1、对象:对象在js
继续阅读 »
说到JSON数据NSLog输出,大家可能并不陌生,在向服务器数据请求时,会经常用到,但Xcode的JSON输出并不怎么美丽
字段""缺失
数组输出为( )
unicode编码中文没有自动显示为中文
大部分情况下copy打印的JSON数据到JSON在线格式化工具,都报错,格式化不了
其实有些第三方插件也可以解决这个问题,现在给大家分享一个比较简单的解决方法,几行代码的扩展就可以解决这个问题.
继续阅读 »
问题描述
项目使用SpringMVC框架,并用jackson库处理JSON和POJO的转换。在POJO转化成JSON时,有些属性我们不需要输出或者有些属性循环引用会造成无法输出。
例如:实体User其中包括用户名、密码、邮箱等,但是我们在输出用户信息不希望输出密码、邮箱信息;
例如:实体user和department是多对一的关系,user内保存着department的信息,那么json输出时会导致这两个实体数据的循环输出;
jackson默认可以使用JsonIgnoreProperties接口来定义要过滤的属性,然后使用ObjectMapper#addMixInAnnotations来设置对应实体对应的JsonIgnorePr
继续阅读 »
问题
在日常开发中,当使用ObjectMapper进行解析json时,我们时常需要将json解析成我们指定泛型的集合类型Collection。
但是如果直接使用objectMapper.readValue(json, Collection.class)的话,那么就会解析为Collection的类型,这个明显不是我们想要的。
方案
在jackson内,如果要反序列化为Collection或者Map,我们可以使用
- CollectionType construct = CollectionType.construct(LinkedList.class, SimpleType.construct(clazz));
-
继续阅读 »
使用@responseBody注解返回json乱码了
Google了一下,找出了以下代码。
public class StringHttpMessageConverter extends AbstractHttpMessageConverter {
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
.....
What's the fuck!
SpringMVC默认编码模式是ISO-8859-1
这里不得不提的是与StringHttpMessageConverter 同级的类
MappingJa
继续阅读 »
最近一个项目做的是搜索引擎的前端,要实现的是搜索框实时匹配用户输入并且提示相关内容。我们的框架是要在得到query的term之后访问/auto?query=并且获取网页中的json,分析数据以下拉框的方式返回,并且对匹配字符高亮。
继续阅读 »
在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类。
通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化。
以前,我记得我用的是第三方的插件。但是,苹果出了这套解析后,效率也大大了超过了其他的JSON解析第三方类库。所以,推荐使用NSJSONSerialization类来完成转化。
继续阅读 »
在拆轮子系列:拆 Okio{:target="_blank"} 最后我曾说过会对 Retrofit、OkHttp、Okio 三者进行一个小结,并且整理一套网络层的“微架构”,今天终于得以完成,在这里一起奉送给大家 :)
继续阅读 »
Golang
看了几天golang, 蛋疼的把以前一个PY的日志处理程序,用golang重写了, 很简单的一个小程序. 用golang重写涉及到, 一些自有特定的string类型的日志, 先是转换成json, 用到simplejson模块, json, err := simplejson.Loads(subStr),
后面发现用map类型实现, 会更优雅一点:
byt := []byte(subStr)
var dat map[string]interface{}
if err:= json.Unmarshal(byt, &dat); err != nil{
panic(err)
继续阅读 »
基本
1.所有的 API 链接采用 http 协议而且开始于下面的格式:
http://github.com/api/v2/:format
注:":format" 是指 "json","xml" 或者 "yaml" 中的一个。但现在基本是 json。
2.使用 GitHub 的 API 是有所限制的,使用 v2 版本,是每分钟 60 次请求。如果你在一分钟内访问了 60 次,它会提示您“拒绝访问”的错误。
more
分支相关
1.一个分支提交的信息列表
commits/list/:user_id/:repository/:branch
2.一个文件提交的信息列表
commits/list/:user_id/:rep
继续阅读 »