導航:首頁 > 編程語言 > 如何解析json格式數據格式

如何解析json格式數據格式

發布時間:2024-06-16 02:02:00

① 如何生成和解析json格式數據

JSON(javaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript的一個子集。
JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript,
Perl, Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成,json生成的數據量比XML 還要少一些,所以很多公司傳輸數據喜歡用JSON數據格式 。

1、下面通過一個簡單的例子來說明JSON 的解析
String strJson = "{\"students\":[{\"name\":\"luci\",\"age\":23}, {\"name\":\"jack\",\"age\":25}, {\"name\":\"Kas\",\"age\":22}]}";
try {
JSONObject mBj = new JSONObject(strJson);//生成對象
JSONArray mJsonArray = (JSONArray) mBj.get("students");//取得數據數組
for (int i = 0; i < mJsonArray.length(); ++i) {
JSONObject mObject = (JSONObject) mJsonArray.get(i);
Log.d("log.d","name:" + mObject.getString("name") + "," + "age:"
+ mObject.getInt("age"));
}
} catch (JSONException e) {
e.printStackTrace();
}

json 數據解析小技巧,通過debug 方式查看對象數據格式。

2、json數據生成
try {
JSONObject mBj=new JSONObject();
JSONArray mJsonArray=new JSONArray();
mBj.put("students", mJsonArray);//存入主對象

JSONObject mJSONObject1=new JSONObject();
mJSONObject1.put("name", "luci");
mJSONObject1.put("age", 23);

mJsonArray.put(mJSONObject1);//存入數組對象

Log.d("log.d", mBj.toString());

} catch (JSONException e) {
e.printStackTrace();
}

② 怎麼解析這樣的json

目前,JSON已經成為最流行的數據交換格式之一,各大網站的API幾乎都支持它。
從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用於編碼,後者用於解碼。
一、json_encode()
該函數主要用來將數組和對象,轉換為json格式。先看一個數組轉換的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);

結果為
{"a":1,"b":2,"c":3,"d":4,"e":5}

由於json只接受utf-8編碼的字元,所以json_encode()的參數必須是utf-8編碼,否則會得到空字元或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。

二、索引數組和關聯數組
PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。
由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。
比如,現在有一個索引數組
$arr = Array('one', 'two', 'three');
echo json_encode($arr);

結果為:

["one","two","three"]

三、類(class)的轉換
下面是一個PHP的類: class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
現在,對這個類的實例進行json轉換:

$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;

輸出結果是
{"public_ex":"this is public"}

可以看到,除了公開變數(public),其他東西(常量、私有變數、方法等等)都遺失了。

③ 解析json的數據

一、 JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。
Json建構於兩種結構:
1、「名稱/值」對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。 如:
{
「name」:」jackson」,
「age」:100
}

2、值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)如:
{
「students」:
[
{「name」:」jackson」,「age」:100},
{「name」:」michael」,」age」:51}
]
}
二、java解析JSON步驟
A、伺服器端將數據轉換成json字元串
首先、伺服器端項目要導入json的jar包和json所依賴的jar包至builtPath路徑下(這些可以到JSON-lib官網下載:)

然後將數據轉為json字元串,核心函數是:
public static String createJsonString(String key, Object value)
{
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
B、客戶端將json字元串轉換為相應的javaBean
1、客戶端獲取json字元串(因為android項目中已經集成了json的jar包所以這里無需導入)
public class HttpUtil
{

public static String getJsonContent(String urlStr)
{
try
{// 獲取HttpURLConnection連接對象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// 設置連接屬性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 獲取相應碼
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}

private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = "";
// ByteArrayOutputStream相當於內存輸出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 將輸入流轉移到內存輸出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 將內存流轉換為字元串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
2、獲取javaBean
public static Person getPerson(String jsonStr)
{
Person person = new Person();
try
{// 將json字元串轉換為json對象
JSONObject jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONObject personObj = jsonObj.getJSONObject("person");
// 獲取之對象的所有屬性
person.setId(personObj.getInt("id"));
person.setName(personObj.getString("name"));
person.setAddress(personObj.getString("address"));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return person;
}

public static List<Person> getPersons(String jsonStr)
{
List<Person> list = new ArrayList<Person>();

JSONObject jsonObj;
try
{// 將json字元串轉換為json對象
jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONArray personList = jsonObj.getJSONArray("persons");
// 遍歷jsonArray
for (int i = 0; i < personList.length(); i++)
{
// 獲取每一個json對象
JSONObject jsonItem = personList.getJSONObject(i);
// 獲取每一個json對象的值
Person person = new Person();
person.setId(jsonItem.getInt("id"));
person.setName(jsonItem.getString("name"));
person.setAddress(jsonItem.getString("address"));
list.add(person);
}
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

return list;
}

④ html 怎麼解析json數據

js讀取解析JSON數據
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,採用完全獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON數據不須要任何特殊的 API 或工具包。

本文主要是對JS操作JSON的要領做下總結。

在JSON中,有兩種結構:對象和數組。

1. 一個對象以「{」(左括弧)開始,「}」(右括弧)結束。每個「名稱」後跟一個「:」(冒號);「『名稱/值』 對」之間運用 「,」(逗號)分隔。 名稱用引號括起來;值如果是字元串則必須用括弧,數值型則不須要。例如:

var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

2. 數組是值(value)的有序集合。一個數組以「[」(左中括弧)開始,「]」(右中括弧)結束。值之間運用 「,」(逗號)分隔。

例如:

var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

為了方便地處理JSON數據,JSON提供了json.js包,下載地址:http://www.json.org/json.js

在數據傳輸流程中,json是以文本,即字元串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。例如:

JSON字元串:

var str1 = '{ "name": "cxh", "sex": "man" }';

JSON對象:

var str2 = { "name": "cxh", "sex": "man" };

一、JSON字元串轉換為JSON對象

要運用上面的str1,必須運用下面的要領先轉化為JSON對象:

//由JSON字元串轉換為JSON對象

var obj = eval('(' + str + ')');

或者

var obj = str.parseJSON(); //由JSON字元串轉換為JSON對象

或者

var obj = JSON.parse(str); //由JSON字元串轉換為JSON對象

然後,就可以這樣讀取:

Alert(obj.name);

Alert(obj.sex);

特別留心:如果obj本來就是一個JSON對象,那麼運用 eval()函數轉換後(哪怕是多次轉換)還是JSON對象,但是運用 parseJSON()函數處理後會有疑問(拋出語法異常)。

二、可以運用 toJSONString()或者全局要領 JSON.stringify()將JSON對象轉化為JSON字元串。

例如:

var last=obj.toJSONString(); //將JSON對象轉化為JSON字元

或者

var last=JSON.stringify(obj); //將JSON對象轉化為JSON字元

alert(last);

數據組
var str='[{"name":"cxh","sex":"man"},{"name":"cxh1","sex":"man1"}]';
var obj = str.parseJSON();

alert(obj[0].name)

留心:

上面的多個要領中,除了eval()函數是js自帶的之外,其他的多個要領都來自json.js包。新版本的 JSON 修改了 API,將 JSON.stringify() 和 JSON.parse() 兩個要領都注入到了 Javascript 的內建對象裡面,前者變成了 Object.toJSONString(),而後者變成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要領,則說明您的json包版本太低。
分類: json

⑤ c#解析JSON的幾種辦法

對比





⑥ jQuery怎麼解析Json字元串

一、jQuery解析Json數據格式:
使用這種方法,必須在Ajax請求中設置參數:
1、dataType: "json"
獲取通過回調函數返回的數據並解析得到我們想要的值,看源碼:

jQuery.ajax({
url:full_url,
dataType:"json",
success:function(results){
alert(result.name);
}
});

jquery非同步請求將type(一般為這個配置屬性)設為「json」,或者利用$.getJSON()方法獲得伺服器返回,那麼就不需要eval()方法了,因為這時候得到的結果已經是json對象了,只需直接調用該對象即可,這里以$.getJSON方法為 例:

vardata="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'北京市'},
{name:'6102',value:'天津市'},
{name:'6103',value:'上海市'},
{name:'6104',value:'重慶市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'漢中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";
$.getJSON("http://sanic.cnblogs.com/",{param:"sanic"},function(data){
//此處返回的data已經是json對象
//以下其他操作同第一種情況
$.each(data.root,function(idx,item){
if(idx==0){
returntrue;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});

二、jQuery解析Json對象:
jQuery提供了另一種方法「parseJSON」,這需要一個標準的JSON字元串,並返回生成的JavaScript對象。語法:
data = $.parseJSON(string);
看看它是如何運用的到實際開發中的:

jQuery.ajax({
url:dataURL,success:function(results){
varparsedJson=jQuery.parseJSON(results);
alert(parsedJson.name);
}
});

⑦ 請教Qt如何解析出Json的數據

解析的主要步驟如下:
1,將來源數據轉化為JsonDocument。可用它的構造函數,或setArray、setObject,或它的靜態成員函數。
2,可用下列四函數判斷它的最外層數據類型(一般是個對象):
bool isArray() const
bool isEmpty() const
bool isNull() const
bool isObject() const
3,知道類型後,用以下函數將它轉化為json對象或json數組或Map
QJsonArray array() const
QJsonObject object() const
QVariant toVariant() const
一般方法
// 1. 創建 QJsonParseError 對象,用來獲取解析結果
QJsonParseError error;
// 2. 使用靜態函數獲取 QJsonDocument 對象
QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toUtf8(), &error);
// 3. 根據解析結果進行處理
if (error.error == QJsonParseError::NoError) {
if (!(jsonDocument.isNull() || jsonDocument.isEmpty())) {
if (jsonDocument.isObject()) {
// ...
} else if (jsonDocument.isArray()) {
// ...
}
}
} else {
// 檢查錯誤類型
}

⑧ php獲得api返回的json數據後,如何解析

返回是json數據,就用 json_decode(api返回的數據,true),轉變成數組就可以在php中操作了。

閱讀全文

與如何解析json格式數據格式相關的資料

熱點內容
aeplexus粒子教程 瀏覽:354
美國簽證可以帶多少個文件夾 瀏覽:1000
學電腦編程需要什麼文化程度 瀏覽:987
iphone91熊貓看書壁紙 瀏覽:668
Java語言編程基礎教程 瀏覽:84
捷安特升級m8000 瀏覽:587
黑莓手機軟體文件夾 瀏覽:948
克里斯汀犧牲最大的電影 瀏覽:471
c頭文件string 瀏覽:146
怎麼在qq發視頻文件怎麼打開方式 瀏覽:840
vivoy13il升級包 瀏覽:59
免費盜墓片30部 瀏覽:442
數據挖掘演算法java實現 瀏覽:706
靈異14路末班車電影 瀏覽:577
pdfjs水印 瀏覽:791
由pin碼獲取密碼 瀏覽:980
英雄聯盟召喚師圖標文件夾 瀏覽:778
三星手機的文件在哪 瀏覽:162
新建文件夾自動加密 瀏覽:501
ps圖不大存的文件特別大 瀏覽:988

友情鏈接