百度百度地图自定义气泡地图jason怎么用

关于json嵌套解析 - ITeye问答
"fullname": "Sean Kelly",
"org": "SK Consulting",
"emailaddrs": [
{"type": "work", "value": "kelly@seankelly.biz"},
{"type": "home", "pref": 1, "value": "kelly@seankelly.tv"}
"telephones": [
{"type": "work", "pref": 1, "value": "+1 214 555 1212"},
{"type": "fax", "value": "+1 214 555 1213"},
{"type": "mobile", "value": "+1 214 555 1214"}
"addresses": [
{"type": "work", "format": "us",
"value": "1234 Main StnSpringfield, TX "},
{"type": "home", "format": "us",
"value": "5678 Main StnSpringfield, TX "}
{"type": "work", "value": "http://seankelly.biz/"},
{"type": "home", "value": "http://seankelly.tv/"}
请问如何取每个元素啊~来段能用的代码,谢谢~
采纳的答案
需要Jackson。
import java.util.ArrayL
import java.util.L
import org.codehaus.jackson.map.ObjectM
public class JsonParsingTest {
public static class Person {
private String fullname =
private String org =
private List&Address& emailaddrs = new ArrayList&Address&();
private List&Address& telephones = new ArrayList&Address&();
private List&Address& addresses = new ArrayList&Address&();
private List&Address& urls = new ArrayList&Address&();
public String getFullname() {
public void setFullname(String fullname) {
this.fullname =
public String getOrg() {
public void setOrg(String org) {
this.org =
public List&Address& getEmailaddrs() {
public void setEmailaddrs(List&Address& emailaddrs) {
this.emailaddrs =
public List&Address& getTelephones() {
public void setTelephones(List&Address& telephones) {
this.telephones =
public List&Address& getAddresses() {
public void setAddresses(List&Address& addresses) {
this.addresses =
public List&Address& getUrls() {
public void setUrls(List&Address& urls) {
this.urls =
public static class Address {
private String type =
private String value =
private String format =
private int pref = 0;
public String getType() {
public void setType(String type) {
this.type =
public String getValue() {
public void setValue(String value) {
this.value =
public String getFormat() {
public void setFormat(String format) {
this.format =
public int getPref() {
public void setPref(int pref) {
this.pref =
public static void main(String[] args) throws Exception {
ObjectMapper om = new ObjectMapper();
// 对象就在这里读取。
Person person = om.readValue(System.in, Person.class);
// 怎么用,随便。
System.out.println(person.getFullname());
System.out.println(person.getEmailaddrs().get(0).getValue());
当前使用世界上最快的json解析器fastjson了
json-lib这样行吧?
public static void main(String[] args) {
String jsonString="{'fullname': 'Sean Kelly','org': 'SK Consulting','emailaddrs': [{'type': 'work', 'value': 'kelly@seankelly.biz'},{'type': 'home', 'pref': 1, 'value': 'kelly@seankelly.tv'}
JSONObject jsonObject = new JSONObject().fromObject(jsonString);
Object obje=jsonObject.get("emailaddrs");
Object obje1=jsonObject.get("addresses");
使用fastJson反向生成对应的Model的List
使用fastJson反向生成对应的Model的List
已解决问题
未解决问题使用 Swift 解析 JSON
招聘信息:
本文翻译自这篇,本文中所有的代码都放在。
我将在本文中概述一个使用 Swift 完成的处理 JSON 的解析库。一个 JSON 的例子如下:
var&json&:&[String:&AnyObject]&=&[&&&"stat":&"ok",&&&"blogs":&[&&&&&"blog":&[&&&&&&&[&&&&&&&&&"id"&:&73,&&&&&&&&&"name"&:&"Bloxus&test",&&&&&&&&&"needspassword"&:&true,&&&&&&&&&"url"&:&"/"&&&&&&&],&&&&&&&[&&&&&&&&&"id"&:&74,&&&&&&&&&"name"&:&"Manila&Test",&&&&&&&&&"needspassword"&:&false,&&&&&&&&&"url"&:&"/"&&&&&&&]&&&&&]&&&]&]&
最具挑战的部分就是如何将该数据转换成如下 Swift 结构体的数组:
struct&Blog&{&&&&&let&id:&Int&&&&&let&name:&String&&&&&let&needsPassword&:&Bool&&&&&let&url:&NSURL&}&
我们首先来看最终的解析函数,它包含两个运算法:>>= 和
。这两个运算符或许看起来很陌生,但是解析整个 JSON 结构就是这么简单。本文其他部分将会解释这些库代码。下面的解析代码是这样工作的:如果 JSON 是不合法的(比如 name 不存在或者 id 不是整型)最终结果将是 nil 。我们不需要反射(reflection)和 KVO ,仅仅需要几个函数和一些聪明的组合方式:
func&parseBlog(blog:&AnyObject)&->&Blog?&{&&&&&return&asDict(blog)&>>=&{&&&&&&&&&mkBlog&&int($0,"id")&&&&&&&&&&&&&&&&&string($0,"name")&&&&&&&&&&&&&&&&&bool($0,"needspassword")&&&&&&&&&&&&&&&&&(string($0,&"url")&>>=&toURL)&&&&&}&}&let&parsed&:&[Blog]?&=&dictionary(json,&"blogs")&>>=&{&&&&&array($0,&"blog")&>>=&{&&&&&&&&&join($0.map(parseBlog))&&&&&}&}&
上面的代码到底做了什么呢?我们来仔细看看这些最重要的函数。首先来看看 dictionary 函数,它接受一个 String 到 AnyObject 的字典,返回另一个具有指定 key 的字典:
dictionary(input:&[String:&AnyObject],&key:&String)&->&&[String:&AnyObject]?&{&&&&&return&input[key]&>>=&{&$0&as?&[String:AnyObject]&}&}&
例如在前面的 JSON 例子中,我们期望 key = &blogs& 包含一个字典。如果字典存在,上述函数返回该字典,否则返回 nil 。我们可以对 Array、String、Integer 写出同样的方法(下面只是生命,完整代码见 Github):
func&array(input:&[String:AnyObject],&key:&String)&->&&[AnyObject]?&func&string(input:&[String:AnyObject],&key:&String)&->&String?&func&int(input:&[NSObject:AnyObject],&key:&String)&->&Int?&
现在,我们来看一下 JSON 例子的完整结构。它本身就是一个字典,包含一个 key 为 &blogs& 的另一个字典。该字典包含一个 key 为 &blog& 的 Array 。我们可以用下面的代码表达上述结构:
if&let&blogsDict&=&dictionary(parsedJSON,&"blogs")&{&&&&&if&let&blogsArray&=&array(blogsDict,&"blog")&{&&&&&&&&&&&&&&&}&}&
我么可以实现一个 >>= 操作来代替,接受一个 optional 参数,当该参数不为 nil 的时候,对其使用一个函数。该操作符使用 flatten 函数,flatten 函数将嵌套的 optional 展开:
operator&infix&>>=&{}&@infix&func&>>=&(optional&:&T?,&f&:&T&->&U?)&->&U?&{&&&&&return&flatten(optional.map(f))&}&func&flatten(x:&A??)&->&A?&{&&&&&if&let&y&=&x&{&return&y&}&&&&&return&nil&}&
另一个被频繁使用的是
操作符。例如下面的代码是用来解析单个 blog 的:
mkBlog&&int(dict,"id")&&&&&&&&&string(dict,"name")&&&&&&&&&bool(dict,"needspassword")&&&&&&&&&(string(dict,&"url")&>>=&toURL)&
当所有的 optional 参数都是 non-nil 的时候该函数才能正常运行,上面的代码转化成:
mkBlog(int(dict,"id"),&string(dict,"name"),&bool(dict,"needspassword"),&(string(dict,&"url")&>>=&toURL))&
所以,我们来看看操作符
的定义。它接受两个 optional 的参数,左边的参数是一个函数。如果两个参数都不是 nil ,将会对右边的参数使用左边的函数参数:
operator&infix&&{&associativity&left&precedence&150&}&func&(f:&(A&->&B)?,&x:&A?)&->&B?&{&&&&&if&let&f1&=&f&{&&&&&&&&&if&let&x1&=&x&{&&&&&&&&&&&&&return&f1(x1)&&&&&&&&&}&&&&&}&&&&&return&nil&}&
现在你有可能想知道 mkBlog 是做什么的吧。它是一个 curried 函数用来包装我们的初始化函数。首先,我们有一个 (Int,String,Bool,NSURL) &> Blog 类型的函数。然后 curry 函数将其类型转化为 Int -> String -> Bool -> NSURL -> Blog :
let&mkBlog&=&curry&{id,&name,&needsPassword,&url&in&&&&Blog(id:&id,&name:&name,&needsPassword:&needsPassword,&url:&url)&}&
我们将 mkBlog 和
一起使用,我们来看第一行:
&&let&step1&=&mkBlog&&int(dict,"id")&
可以看到,用
将他们两个连起来,将会返回一个新的类型:(String -> Bool -> NSURL -> Blog)? ,然后和 string 函数结合:
let&step2&=&step1&&string(dict,"name")&
我们得到:(Bool -> NSURL -> Blog)? ,一直这样结合,最后将会得到类型为 Blog? 的值。
希望你现在能明白整个代码是如何在一起工作的了。通过创建一些辅助函数和运算符,我们可以让解析强类型的 JSON 数据变得非常容易。如果不用 optional 类型,那么我们将会使用完全不同的类型,并且包含一些错误信息,但这将是另外的 blog 的话题了。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量7582点击量7137点击量6173点击量5687点击量5429点击量4658点击量3809点击量3293点击量3266
&2016 Chukong Technologies,Inc.
京公网安备89json数据的坐标怎样调用_百度地图api吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:5,767贴子:
json数据的坐标怎样调用收藏
我已从数据库中读取了车辆经纬度数据,通过ajax以json的数据格式传到了浏览器,但是现在不知道怎样利用这些数据实现车辆轨迹显示,求大神帮助,需要点播下核心代码。另外请大神看一下,js解析json数据的代码对不对,如下CarDao cd = new CarDao();List&Carinfo& list=cd.getAll(); JSONArray jsonArray = JSONArray.fromObject(list);response.setCharacterEncoding(“utf-8”);response.getWriter().write(jsonArray.toString());if(xmlHttp.readyState==4){if(xmlHttp.status==200){var result= xmlHttp.responseTvar json=eva(“(”+result+”)”);}}
登录百度帐号推荐应用trackbacks-0
& & 总结一下自己使用jackson处理对象与JSON之间相互转换的心得。& &&jackson是一个用Java编写的,用来处理JSON格式数据的类库,它速度非常快,目前来看使用很广泛,逐渐替代了Gson和json-lib。& &&如果直接引入jar包,可以访问这个地址下载http://jackson.codehaus.org/1.9.11/jackson-all-1.9.11.jar& &&如果使用maven构建项目,加入下面的依赖&dependency&
&&&&&& &groupId&org.codehaus.jackson&/groupId&
&&&&&& &artifactId&jackson-mapper-asl&/artifactId&
&&&&&& &version&1.9.11&/version&
&&& &/dependency&& &&无代码无真相,为了最简单的说明,我直接上代码。public class User {
&&& private String name;
&&& private Gender gender;
&&& private List&Account& accounts;
&&& 省略get和set方法
}public enum Gender {
&&& FEMALE
}public class Account {
&&& private Integer id;
&&& private String cardId;
&&& private BigDecimal balance;
&private Date date;
&省略get和set方法
}public static void main(String[] args) throws Exception {
&&&&&& User user = new User();
& & & &user.setName("菠萝大象");
&&&&&& user.setGender(Gender.MALE);
&&&&&& List&Account& accounts = new ArrayList&Account&();
&&&&&& Account account = new Account();
&&&&&& account.setId(1);
&&&&&& account.setBalance(BigDecimal.valueOf(1900.2));
&&&&&& account.setCardId("");
&&&&&& account.setDate(new Date());
&&&&&& accounts.add(account);
&&&&&& account = new Account();
&&&&&& account.setId(2);
&&&&&& account.setBalance(BigDecimal.valueOf(5000));
&&&&&& account.setCardId("");
&&&&&& account.setDate(new Date());
&&&&&& accounts.add(account);
&&&&&& user.setAccounts(accounts);
ObjectMapper mapper = new ObjectMapper();
&&&&&& mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, Boolean.TRUE);
&&&&&& String json = mapper.writeValueAsString(user);
&&&&&& System.out.println("Java2Json: "+json);
&&&&&& user = mapper.readValue(json, User.class);
&&&&&& System.out.println("Json2Java: "+mapper.writeValueAsString(user));
}& &&mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, Boolean.TRUE);这是辅助设置,控制格式化输出。& &&之前使用的mapper.getSerializationConfig().setXxx方法现在很多都已经被标注为@Deprecated了,因此请大家使用上面的方式处理。& &&SerializationConfig.Feature枚举里面还有很多其它的设置项,比如日期,比如要不要输出null值等等。其它的还有:& & & &&org.codehaus.jackson.JsonGenerator.Feature.*&& & & &&org.codehaus.jackson.JsonParser.Feature.*& &&让我们来看看输出结果,两次转换之后,打印出来的字符串应该是一样的:& &&& &&OK,果然结果是一致的,大家现在应该会使用jackson进行Java与Json的互相转换了吧?恩,现在再考虑一种情况,如果想将List&User&的JSON字符串反转为泛型,应该怎么做呢?& &&想这样:mapper.readValue(json, List&User&.class)?这可是错误的,这里的参数是Class&T& valueType,valueType是Class&T&类的对象。如上面所示User.class 就是Class&User&类的对象。因此要想获得泛型的集合类型需要通过其它办法:/**&* 获取泛型的Collection Type&* @param jsonStr json字符串&* @param collectionClass 泛型的Collection&* @param elementClasses 元素类型&*/public static &T& T readJson(String jsonStr, Class&?& collectionClass, Class&?&... elementClasses) throws Exception {
&&&&&& ObjectMapper mapper = new ObjectMapper();
&&&&&& JavaType javaType = mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
&&&&&& return mapper.readValue(jsonStr, javaType);
}& &&定义一个List&User&,向里面添加两次user,先调用writeValueAsString方法打印出json,再调用readJson方法,这不仅可以转换泛型List&T&,还可以用于其它集合,比如Map&K,V&等等。& &&List&User& list = readJson(json,
List.class, User.class);&& &&ObjectMapper可以让对象与JSON之间相互转换,除此之外Jackson还提供了JsonGenerator&和JsonParser&这两个类,它们可以更细粒度的处理序列化与反序列化。调用ObjectMapper的writeValueAsString和readValue方法,最终还是会交给JsonGenerator&和JsonParser&去处理,对此还有疑惑的话,可以去看看这两个方法的源码。& &&本文为菠萝大象原创,如要转载请注明出处。bolo
阅读(47338)
&re: 使用jackson对Java对象与JSON字符串相互转换的一些总结
大象写东西写的很全,很细致,学习了!&&&&&&
3031123567891011121314151718192021222324252627283012345678910
随笔分类(67)
随笔档案(67)
积分与排名
阅读排行榜
评论排行榜

我要回帖

更多关于 百度地图自定义路线 的文章

 

随机推荐