代码很简单就两个类一个TreeNode.java 和一个测试类Test.java(可直接运行)
在运行之前需要以下公共类:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph-1.0.6.jar
json-lib-2.3-jdk15.jar
package com.test;
import java.util.ArrayList;
public class TreeNode {
private String id;
private String pid;
private String name;
private String remark;
private ArrayList<TreeNode> children = new ArrayList<TreeNode>();
public TreeNode(String id, String pid, String name, String remark) {
this.id = id;
this.pid = pid;
this.name = name;
this.remark = remark;
}
public void add(TreeNode node) {//递归添加节点
if ("0".equals(node.pid)) {
this.children.add(node);
} else if (node.pid.equals(this.id)) {
this.children.add(node);
} else {
for (TreeNode tmp_node : children) {
tmp_node.add(node);
}
}
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public ArrayList<TreeNode> getChildren() {
return children;
}
public void setChildren(ArrayList<TreeNode> children) {
this.children = children;
}
}
测试类Test.java
package com.test;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
public static void main(String[] args) {
TreeNode root = new TreeNode("0", "0", "000000", "00JJJ");
TreeNode node = null;
node = new TreeNode("1", "0", "111111", "11AAA");
root.add(node);
node = new TreeNode("2", "0", "222222", "11BBB");
root.add(node);
node = new TreeNode("3", "2", "333333", "11CCC");
root.add(node);
// JSONObject obj = JSONObject.fromObject(root);//有根
JSONArray obj = JSONArray.fromObject(root.getChildren());// 不要根
System.out.println(obj.toString());
}
}
② 如何使用JSON Framework库解析与生成json数据
JSON
Framework设置工作
为了在自己的工程项目中使用json framework框架库,必须将其导入到工程项目组中。即把JSON Framework库的Classes文件夹下所有的文件导入添加进项目中,然后在具体使用json framework的代码实现文件中添加#import
"SBJson.h"导入此头文件。
使用方式——解析JSON字符串:JSONValue
1. 首先取得JSON字串
NSURL *url = [NSURL URLWithString:@"http://graph.facebook.com/cyberbuzz"];
NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
复制代码
2. 调用json framework提供的解析方法来解析这个字串,将结果存储在NSDictionary字典中
NSDictionary *items = [jsonString JSONValue];
注意:JSONValue解析后的返回值是
NSDictionary 或者是 NSArray,所以上例最好是定义返回值为id。结合上面两步我们可以构建一个方法来实现:
- (id)fetchJSONValueForURL:(NSURL *)url
{
NSString *jsonString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
// NSLog(@"json value %@:",jsonString);
id jsonValue = [jsonString JSONValue];
[jsonString release];
return jsonValue;
}
复制代码
如果是为了得到NSDictionary类型,可以如下:
- (NSDictionary *)fetchJSON:(NSString *)text
{
NSString *urlString = [NSString stringWithFormat:text];
NSURL *url = [NSURL URLWithString:urlString];
//NSLog(@"fetching data");
return [self fetchJSONValueForURL:url];
}
复制代码
3. 可以通过NSLog()来确认解析的结果,或是通过objectForKey等方法来取得JSON中的值
NSLog(@"Parsed JSON:%@",[items description]);
使用方式——将NSDictionary字典数据编码成JSON字符串:JSONFragment
③ 苹果手机如何打开json文件
(1)使用TouchJSon解析方法,将解析得到的内容存放字典中,编码格式为UTF。(2)使用SBJson解析方法,(3)使用IOS5自带解析类NSJSONSerialization方法解析。
json是一个HTTP代理/HTTP监视器/反向代理,使开发人员能够查看其机器和Internet之间的所有HTTP和SSL/HTTPS流量。这包括请求,响应和HTTP标头(包含cookie和缓存信息)Charles是在Mac下常用的网络封包截取工具。
在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外。
Charles也可以用于分析第三方应用的通讯协议。配合Charles的SSL功能,Charles还可以分析Https协议下载Charles并不是一款免费产品,你需要破解才能使用,建议购买正版软件。这里使用的是文件覆盖的方法。
即:下载新的json文件,并在Charles的安装目录下替换掉它,Windows下替换目录在Charleslib破解的json.jar文件可以在网上搜索下载。
④ ios开发:如何取出json里面的字段值
在内存中,json对象实际上是一个字典,字典里面的真正存储值只有两种类型NSString和NSNumber,可以用字典和数组包装。如果想看看json里的内容,可以先把json转为data,再把data转为NSString输出,就可以看到了。更多详情:http://blog.csdn.net/enuola/article/details/7903632/
⑤ XML解析和Json解析简介以及两者的区别
一、 XML:用到一个开源解析类,GDataXMLNode(将其加入项目中),添加libxml2.dylib框架
经常用到的方法:
1.- (id)initWithXMLString:(NSString *)str options:(unsigned int)mask error:(NSError *)error
2.- (id)initWithData:(NSData *)data options:(unsigned int)mask error:(NSError *)error
这两个方法可以将NSString类型或者NSData类的数据转化为GDataXMLNode类可以解析的XML文档
3.- (GDataXMLElement *)rootElement 返回GDataXMLElement中所有节点信息
4.- (NSArray *)elementsForName:(NSString *)name 返回当前节点下名称为name的所有节点,返回值为数组。
5.- (NSString *)stringValue 返回节点中间的值。
二、 JSON:用到开源的框架SBJSON,对NSString类的扩展,我们程序中的所有NSString对象都可以调用其中的方法。
SBJSON的方法- (id)JSONValue 此方法返回一个ID类对象,因为JSON信息都是以键值来传输的,所以我们会用NSDictionary来接收这个返回值。
两种结构:
1.“键值对”的集合。对象(object),记录(Record),结构(struct),字典(dictionary),哈希表(hashtable),键列表(keyed list),关联数组(associative array)。
2.值的有序列表。数组(Array)。
⑥ 如何处理json字符串中的
什么语言来解决,ios我知道是第三方库:JSONKit、SBJson