代碼很簡單就兩個類一個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