本文目錄一覽:
- 1、PHP生成及獲取JSON文件的方法
- 2、PHP JSON格式數據交互實例代碼詳解
- 3、請教Qt如何解析出Json的數據
- 4、java怎麼使用gson解析json字符串
- 5、java jSon實例編寫
PHP生成及獲取JSON文件的方法
本文實例講述了PHP生成及獲取JSON文件的方法。分享給大家供大家參考,具體如下:
首先定義一個數組,然後遍曆數據表,把相應的數據放到數組中,最後通過json_encode()轉化數組
json_encode()
函數的功能是將數值轉換成
JSON
數據存儲格式。
putjson.php:
?php
//
生成一個PHP數組
$data
=
array();
$data[0]
=
array(‘1′,’吳者然’,’onestopweb.cn’);
$data[1]
=
array(‘2′,’何開’,’iteye.com’);
//
把PHP數組轉成JSON字符串
$json_string
=
json_encode($data);
//
寫入文件
file_put_contents(‘test.json’,
$json_string);
?
有同名的
JSON
文件則覆蓋,沒有則創建。
生成或覆蓋的
JSON
如下:
複製代碼
代碼如下:[[“1″,”\u811A\u672C\u4E4B\u5BB6″,””],[“2″,”\u7F16\u7A0B\u5F00\u53D1″,”jb51.net”]]
然後,把
JSON
文件中的數據讀取到PHP變量中。
getjson.php:
?php
//
從文件中讀取數據到PHP變量
$json_string
=
file_get_contents(‘test.json’);
//
把JSON字符串轉成PHP數組
$data
=
json_decode($json_string,
true);
//
顯示出來看看
var_dump($data);
echo
‘brbr’;
print_r($data);
echo
‘brbr’;
echo
‘編號:’.$data[0][0].’
姓名:’.$data[0][1].’
網址:’.$data[0][2];
echo
‘br’;
echo
‘編號:’.$data[1][0].’
姓名:’.$data[1][1].’
網址:’.$data[1][2];
?
效果圖:
PS:這裡再為大家推薦幾款比較實用的json在線工具供大家參考使用:
在線JSON代碼檢驗、檢驗、美化、格式化工具:
JSON在線格式化工具:
在線XML/JSON互相轉換工具:
json代碼在線格式化/美化/壓縮/編輯/轉換工具:
C語言風格/HTML/CSS/json代碼格式化美化工具:
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP中json格式數據操作技巧匯總》、《PHP針對XML文件操作技巧總結》、《PHP基本語法入門教程》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
PHP JSON格式數據交互實例代碼詳解
在PHP中解析JSON主要用到json_encode和json_decode兩個PHP
JSON函數,比PHP解析XML方便很多,下面詳細介紹下PHP
JSON的使用。
JSON基礎介紹
JSON(JavaScript
Object
Notation)
是一種輕量級的數據交換格式。
JSON主要有兩種結構:
“名稱/值”對的集合,在PHP中可以理解為關聯數組
(associative
array)。
值的有序列表(An
ordered
list
of
values)。在PHP中可以理解為普通數組(array)。
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’
對”之間使用“,”(逗號)分隔。
數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。值(value)可以是雙引號括起來的字符串(string)、數值(number)、true、false、
null、對象(object)或者數組(array)。這些結構可以嵌套。
我目前對JSON的理解更偏向於數組,類似於PHP中的關聯數組,你可以將PHP數組轉換為JSON格式。
更多JSON的介紹請參考JSON官網和IBM關於JSON的介紹
PHP
JSON解析實例
PHP5.2開始已經將JSON作為PHP擴展的一部分,所以並不需要另外安裝JSON。另外為了保證下面的PHP
JSON實例不出現中文亂碼,請保證你的編碼格式為UTF8。
JSON是Javascript的一部分,首先我們看下Javascript中如何定義JSON
複製代碼
代碼如下:
var
json_obj
=
{‘WebName’:’PHP網站開發教程網’};
alert(json_obj.WebName);
var
json_arr
=[{‘WebName’:’PHP網站開發教程網’,’WebSite’:”},{‘ArtTitle’:’PHP
JSON實例講解’}]
alert(json_arr[1].ArtTitle);
var
php_json
=
[[‘PHP網站開發教程網’,”],[‘文章標題’,’PHP
JSON實例講解’]];
alert(php_json[1][0]);
在這段JSON實例代碼中我構建了所有的JSON形式,
第1行,定義了JSON以對象形式存在
第4行,定義了JSON以數組形式存在,嵌套了JSON對象,所以有點類似於PHP的關聯數組,其實仍然是對象。
第7行,定了JSON以普通數組形式存在。
注意:由於Javascript是區分大小寫的,所以訪問JSON關聯數組對象時注意key的大小寫問題。
PHP與JSON格式數據交互時,第一步需要將PHP數組轉換為JSON格式的數據,可使用PHP5自帶的json_encode函數,當PHP解析傳遞過來的JSON格式數據時需要使用json_decode函數進行解析轉換為PHP數組,PHP轉換並解析JSON數據的實例代碼如下
複製代碼
代碼如下:
?php
$json_arr
=
array(‘WebName’=’PHP網站開發教程網’,’WebSite’=”);
$php_json
=
json_encode($json_arr);
echo
$php_json;
$php_json
=
json_decode($php_json);
print_r($php_json);
?
說明:這裡通過PHP定義了關聯數組,然後通過json_encode轉換為JSON格式的數據,通過echo語句可以看到轉換後的JSON對象,通過PHP
JSON解析函數json_decode可以將JSON格式的數據解析為PHP的關聯數組。如果編碼不正確,JSON中文會出現亂碼。如果你使用Editplus調試PHP,請注意保存文件時編碼將ANSI改為UTF8。
最後我們來看下完整的PHP
JSON交互實例
複製代碼
代碼如下:
?php
$json_arr
=
array(‘WebName’=’PHP網站開發教程網’,’WebSite’=”);
$php_json
=
json_encode($json_arr);
?
script
type=”text/javascript”
var
php_json
=
?=$php_json?;
/script
script
type=”text/javascript”
function
php_json_dis(php_json)
{
alert(php_json.WebName);
alert(php_json.WebSite);
}
php_json_dis(php_json);
/script
至此,PHP通過json_encode和json_decode函數對JSON格式數據進行轉換和解析的實例就介紹完了。
請教Qt如何解析出Json的數據
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一個子集。 JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Java、JavaScript、Perl、Python等)。這些特性使JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成。
常用的Json庫
JsonCpp
JsonCpp是一個C++用來處理JSON數據的開發包。
網址:.
cJSON
cJSON是一個超輕巧,攜帶方便,單文件,簡單的可以作為ANSI-C標準的JSON解析器。
網址:.
QJson
QJson是一個基於Qt的開發包用來將JSON數據解析成QVariant對象,JSON的數組將被映射為QVariantList實例,而其他對象映射為QVariantMap實例。
網址:.
關於Qt中對JSON的生成與解析,Qt5以前的版本,需要去進行單獨下載、編譯,才能使用。到了Qt5,提供了專門的QJsonDocument類來讀取和寫入JSON文檔。
Qt5中JSON的生成與解析
QJsonDocument
QJsonDocument既可以從一個基於文本表示的UTF-8編碼,又可以從Qt自己的二進制格式讀取和寫入這個文件。
JSON文檔可以從它的基於文本的表示使用QJsonDocument::fromJson()轉換為QJsonDocument,用.toJSON()將其轉換迴文字。解析器非常快速和高效,將JSON轉換為二進制表示。
QJsonObject
QJsonObject類用於封裝JSON對象。
JSON對象是鍵值對,其中鍵是唯一的字符串,其值由QJsonValue代表。一個QJsonObject可以從QVariantMap轉換/被轉換。
QJsonArray
QJsonArray類用於封裝JSON數組。
一個JSON數組列表值。該列表可以通過從陣列插入和移除QJsonValue的操縱。一個QJsonArray可以從QVariantList轉換為/被轉換。
QJsonDocument有效解析後的文檔可以使用!iSNull()判斷。使用isArray()和isObject()來判斷是否包含一個數組或對象。文檔中包含的數組或對象可以使用array()或object()進行檢索,然後讀取或操縱。
示例
QJsonObject
(1)生成Json
QJsonObject json;
json.insert(“name”, QString(“Qt”));
json.insert(“version”, 5);
json.insert(“windows”, true);
QJsonDocument document;
document.setObject(json);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);
QString json_str(byte_array);
結果:
json_str:{“name”: “Qt”,”version”: 5,”windows”: true}
(2)解析Json
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, json_error);
if(json_error.error == QJsonParseError::NoError)
{
if(parse_doucment.isObject())
{
QJsonObject obj = parse_doucment.object();
if(obj.contains(“name”))
{
QJsonValue name_value = obj.take(“name”);
if(name_value.isString())
{
QString name = name_value.toString();
}
}
if(obj.contains(“version”))
{
QJsonValue version_value = obj.take(“version”);
if(version_value.isDouble())
{
int version = version_value.toVariant().toInt();
}
}
if(obj.contains(“windows”))
{
QJsonValue version_value = obj.take(“windows”);
if(version_value.isBool())
{
bool flag = version_value.toBool();
}
}
}
}
結果:
name:Qt
version:5
windows:true
QJsonArray
(1)生成Json
QJsonArray json;
json.insert(0, QString(“Qt”));
json.insert(1, QString(“version”));
json.insert(2, true);
QJsonDocument document;
document.setArray(json);
QByteArray byte_array = document.toJson(QJsonDocument::Compact);
QString json_str(byte_array);
結果:
json_str:[“Qt”,”version”,true]
(2)解析Json
QJsonParseError json_error;
QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, json_error);
if(json_error.error == QJsonParseError::NoError)
{
if(parse_doucment.isArray())
{
QJsonArray array = parse_doucment.array();
int size = array.size();
for(int i=0; i
{
QJsonValue value = array.at(i);
if(value.isString())
{
QString name = value.toString();
}
else if(value.isBool())
{
bool flag = value.toBool();
}
}
}
}
結果:
數組不同下標對應的值
0:Qt
1:version
2:true
如上,簡單介紹一下常用的JSON庫以及Qt中對JSON的生成與解析,如需更多資料請參考官方文檔,還是那句話,沒有比助手更好、更專業的資料了!
java怎麼使用gson解析json字符串
Gson是谷歌推出的解析json數據以及將對象轉換成json數據的一個開源框架. 現在json因其易讀性和高效率而被廣泛的使用着.
相對於java以及其它json的解析框架,Gson非常的好用.
簡單來講就是根據json的數據結構定義出相應的javabean —“new”出Gson的實例gson—-gson.fromJson(jsonString,JavaBean.class) 即可.
下面給出一個實例來說明.
步驟1:目標:將從webservice傳回的json
{
“status”: 0,
“result”: {
“location”: {
“lng”: 103.98964143811,
“lat”: 30.586643130352
},
“formatted_address”: “四川省成都市雙流縣北一街154”,
“business”: “簇橋,金花橋”,
“addressComponent”: {
“city”: “成都市”,
“district”: “雙流縣”,
“province”: “四川省”,
“street”: “北一街”,
“street_number”: “154”
},
“cityCode”: 75
}
}
先普及下json數據格式定義: json數據只有兩種格式.
一種是對象: 一個大括號包裹的內容就是一個對象.裡面是無數個逗號相間隔的鍵值對
{ “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”: “aaaa” }
一種是數組:一個方括號包裹的內容就是一個數組,裡面是無數個逗號相間隔的json對象
如:
{
“people”: [
{
“firstName”: “Brett”,
“lastName”: “McLaughlin”,
“email”: “aaaa”
},
{
“firstName”: “Jason”,
“lastName”: “Hunter”,
“email”: “bbbb”
},
{
“firstName”: “Elliotte”,
“lastName”: “Harold”,
“email”: “cccc”
}
]
}
步驟2 定義json數據格式對應的javaBean
public class Result {
private Integerstatus;
private ResultDetailresult;
public Result() {
}
public Result(Integer status, ResultDetail result) {
super();
this.status = status;
this.result = result;
}
public ResultDetail getResult() {
return this.result;
}
public Integer getStatus() {
return this.status;
}
public void setResult( ResultDetail result ) {
this.result = result;
}
public void setStatus( Integer status ) {
this.status = status;
}
@Override
public String toString() {
return “Result [status=” + this.status + “, result=” + this.result
+ “]”;
}
}
public class ResultDetail {
Locationlocation;
Stringformatted_address;
AddressComponentaddressComponent;
Stringbusiness;
StringcityCode;
public ResultDetail() {
super();
// TODO Auto-generated constructor stub
}
public ResultDetail(Location location, String formatted_address,
AddressComponent addressComponent, String business, String cityCode) {
super();
this.location = location;
this.formatted_address = formatted_address;
this.addressComponent = addressComponent;
this.business = business;
this.cityCode = cityCode;
}
public AddressComponent getAddressComponent() {
return this.addressComponent;
}
public String getBusiness() {
return this.business;
}
public String getCityCode() {
return this.cityCode;
}
public String getFormatted_address() {
return this.formatted_address;
}
public Location getLocation() {
return this.location;
}
public void setAddressComponent( AddressComponent addressComponent ) {
this.addressComponent = addressComponent;
}
public void setBusiness( String business ) {
this.business = business;
}
public void setCityCode( String cityCode ) {
this.cityCode = cityCode;
}
public void setFormatted_address( String formatted_address ) {
this.formatted_address = formatted_address;
}
public void setLocation( Location location ) {
this.location = location;
}
}
public class Location {
Stringlng;
Stringlat;
public Location() {
}
public Location(String lng, String lat) {
this.lng = lng;
this.lat = lat;
}
public String getLat() {
return this.lat;
}
public String getLng() {
return this.lng;
}
public void setLat( String lat ) {
this.lat = lat;
}
public void setLng( String lng ) {
this.lng = lng;
}
@Override
public String toString() {
return “Location [lng=” + this.lng + “, lat=” + this.lat + “]”;
}
}
public class AddressComponent {
Stringcity;
Stringdistrict;
Stringprovince;
Stringstreet;
Stringstreet_number;
public AddressComponent() {
super();
// TODO Auto-generated constructor stub
}
public AddressComponent(String city, String district, String province,
String street, String street_number) {
super();
this.city = city;
this.district = district;
this.province = province;
this.street = street;
this.street_number = street_number;
}
public String getCity() {
return this.city;
}
public String getDistrict() {
return this.district;
}
public String getProvince() {
return this.province;
}
public String getStreet() {
return this.street;
}
public String getStreet_number() {
return this.street_number;
}
public void setCity( String city ) {
this.city = city;
}
public void setDistrict( String district ) {
this.district = district;
}
public void setProvince( String province ) {
this.province = province;
}
public void setStreet( String street ) {
this.street = street;
}
public void setStreet_number( String street_number ) {
this.street_number = street_number;
}
@Override
public String toString() {
return “AddressComponent [city=” + this.city + “, district=”
+ this.district + “, province=” + this.province + “, street=”
+ this.street + “, street_number=” + this.street_number + “]”;
}
}
測試:
jsonString ( 目標json數據,已經在最上面寫好的)
System.out.println( “jsonString:” + jsonString );
Gson gson = new Gson();
Result fromJson = gson.fromJson( jsonString.toString() ,Result.class );
System.out.println( “******************************************” );
System.out.println( fromJson );
結果:
jsonString:{“status”:0,”result”:{“location”:{“lng”:103.98964143811,”lat”:30.586643130352},”formatted_address”:”四川省成都市雙流縣北一街154″,”business”:”簇橋,金花橋”,”addressComponent”:{“city”:”成都市”,”district”:”雙流縣”,”province”:”四川省”,”street”:”北一街”,”street_number”:”154″},”cityCode”:75}}
*******************************************
Result [status=0, result=ResultDetail [location=Location [lng=103.98964143811, lat=30.586643130352], formatted_address=四川省成都市雙流縣北一街154, addressComponent=AddressComponent [city=成都市, district=雙流縣, province=四川省, street=北一街, street_number=154], business=簇橋,金花橋, cityCode=75]]
可見,jsonString已經成功的被轉換成了對應的javaBean
步驟3 : 總結.說明
Gson可以很輕鬆的實現javaBean和jsonString之間的互轉.只需要明白json如何定義.剩下的就非常簡單了.
java jSon實例編寫
是這麼個過程
1、在頁面用js發出個ajax請求,請求類型最好寫成json,建議使用jquery的ajax方法,省事。請求的路徑要配在web.xml中
2、這個請求路徑制定的是一個servlet,就是一個java類,繼承自httpservlet。這個servlet里可以通過request對象獲取到輸入參數,根據輸入參數和自己具體的邏輯拼出個字符串,當然是json格式的。然後輸出。這個不會寫說明你需要補一補java web開發的基礎知識。
3、在頁面的ajax請求的success方法中,直接可以獲取到返回的json對象,然後就根據你的json格式處理吧。
$.ajax({
url: ‘ajax/test’,//這個是servlet請求路徑
success: function(data) { //data就是servlet輸出的json格式字符串,這裡會自動轉化為json對象
alert(‘Load was performed.’);
}
});
原創文章,作者:RBH90,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130720.html