json(javascript
Object
Notation
的缩写)是一个基于文本的,人类可读的,开放标准的轻量级数据交换格式。它继承了javascript中的简单数据结构和相关数组对象,称为对象。不管它
和javascript的瓜葛,json是语言独立的,几乎所有编程语言都能解析它。json以键值对来表示数据。每个值被一个键名字引用(键名字是个string)。如果你想以json表示人名,他们的名字将被"name"键引用,如下:“name”
:
“James”所以json用一种容易被应用程序传递的方式表现数据,非常完美。所以当从webservice解析数据时,你要做的第一件事就是搞清楚你的模型。下面我们会分析webservice的响应数据,搞清楚哪些bit代表对象,对象数组,对象所属的字段,等等。但是json可以表示哪些类型的数据呢?1.对象是大括号内的所有东东2.字符串用双引号3.数字只是简单的显示,如
123454.
数组由中括号包围5.布尔值从'true'和'false'获得,没有引号6.null值由'null'表示,没有引号下面的例子使用了所有这些数据类型:(显然并没有bool和null类型--译者按){
"firstName":
"John",
"lastName":
"Smith",
"age":
25,
"address":
{
"streetAddress":
"21
2nd
Street","city":
"New
York","state":
"NY",
"postalCode":
"10021"
},
"phoneNumber":
[
{
"type":
"home",
"number":
"212
555-1234"},
{
"type":
"fax",
"number":
"646
555-4567"}
]
}以上数据的objective-c表示为:#import
@interface
Person
:
NSObject{
NSString
*firstName
NSString
*lastName
NSInteger
age
NSDictionary
*address
NSArray
*phoneNumbers}
@end你会认为我们漏掉了一些信息,比如地址的详情,以及电话号码。怎么建立你的对象模型是你决定的事情。我选择了用字典保存地址详情,每个值用一个key名字引用,就像在json中一样。电话号码也保存在字典里,但是这些字典是放到数组中的。如果你希望,你可以创建一个名为Adress的类,用它来保存地址详情。这会变得更像面向对象的方式,如果在app的其他地方还要用到address,并且不必绑定到person上的话会很有用。一旦你有了自己的对象模型,你需要从json中得到数据并创建模型的实例。sbjson有一个有用的sbjsonparser类,可以在一行内搞定整个json串的解析:SBJsonParser
*jsonParser
=
[[SBJsonParser
alloc]
init]NSError
*error
=
nilNSArray
*jsonObjects
=
[jsonParser
objectWithString:jsonString
error:&error][jsonParser
release],
jsonParser
=
nilsbjson将json作为objective-c的字典来处理。对于不同的webservice,你可能得到一个顶级的json对象或者一个数组。因此,objectWithString:error:有一个id类型返回值。你可以使用objective-c的动态特性来决定解析返回时采用何种数据来
接收,如下:id
jsonObject
=
[jsonParser
objectWithString:jsonString
error:&error]
if
([jsonObject
isKindOfClass:[NSDictionary
class]])
//
treat
as
a
dictionary,
or
reassign
to
a
dictionary
ivar
else
if
([jsonObject
isKindOfClass:[NSArray
class]])
//
treat
as
an
array
or
reassign
to
an
array
ivar.如果webservice永远只返回两种顶层表现的一种,你大可以继续并假设它会是一个数组或字典,而不必担心检查(类型)。现在你得到了以你可以通过objcetive-c管理的格式来表示json数据。你所要做的就是遍历数组/字典的内容,并创建person对象来表示他们。一件值得记住的事情是,遍历如年龄这种数字将被包裹在NSNumber对象中,所以我们需要对其调用'intValue'来得到数字。
import org.json.JSONObjecttry {
JSONObject json = new JSONObject()
int totalProperty = json.getInt("totalProperty")
JSONObject root = json.getJSONObject("root")
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
要取什么值就用getXXX的方法来取
浏览器上查看json数据的办法。如下参考:
1.先打开编写的软件web程序。
2. 然后创建一个新的PHP文件来保存json数据。
3.然后在新的PHP文件中填写以下代码。
4. 然后创建一个新的HTML文件。
5.接下来是编写HTML的基本框架。
6. 然后介绍重要的JQuery文件。
7. 接下来,编写一个div标记来保存json数据。
8. 最后,编写js程序获取HTML格式的json数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)