『壹』 從API介面獲取的json數據怎麼存到對象的List集合中
1. 簡單的手動放置 鍵值對 到JSONObject,然後在put到JSONArray對象里
List<Article> al = articleMng.find(f);
System.out.println(al.size());
HttpServletResponse hsr = ServletActionContext.getResponse();
if(null == al){
return ;
}
for(Article a : al){
System.out.println(a.getId()+a.getDescription()+a.getTitle());
}
JSONArray json = new JSONArray();
for(Article a : al){
JSONObject jo = new JSONObject();
jo.put("id", a.getId());
jo.put("title", a.getTitle());
jo.put("desc", a.getDescription());
json.put(jo);
}
try {
System.out.println(json.toString());
hsr.setCharacterEncoding("UTF-8");
hsr.getWriter().write(json.toString());
} catch (IOException e) {
e.printStackTrace();
}
復制代碼
上述代碼JSONArray是引入的org.json.JSONArray包
而用net.sf.json包下JSONArray的靜態方法:fromObject(list) 這是網上大多是都是直接用此方法快捷轉換JSON,但是對於Hibernate級聯操作關聯的對象,這個方法就會報錯,如果將映射文件中的級聯配置去掉就行了。
另外對於list的要求就是其中的元素是字元串或對象,否則JSON不知道你想要的是什麼數據。
<many-to-one name="cmsent" column="comment_tid" class="com.fcms.cms.entity.CmsComment"
not-null="false" cascade="delete">
但是級聯操作畢竟還是得存在,否則以後數據冗餘、多餘。
解決方法就是:JSONArray subMsgs = JSONArray.fromObject(object, config);
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object arg0, String arg1, Object arg2) {
if (arg1.equals("article") ||arg1.equals("fans")) {
return true;
} else {
return false;
}
}
});
『貳』 如何使用 APICloud 的端 API 連接到自己的伺服器資料庫獲取數據
方法/步驟
1
【首先】
1.如果想快速開發,沒有自己的伺服器,還是推薦使用雲API的數據雲。 2.不使用雲API的數據雲,可能是因為有web版且已經有商用數據。 3.不使用雲API的數據雲,需自己寫數據介面,即客戶端發送請求接收處理與生成json數據給客戶端進行交互。 4.感謝APICloud提供新的APP開發方式。 其實也不難,使用api.ajax進行請求即可。PHPer,以下使用演示使用PHP,資料庫使用Mysql,java黨或者.NET黨請自行coding...
2
【連接到資料庫(文件放在伺服器上),伺服器端輸出JSON】
<?php
/*
* 配置連接資料庫信息
*/
$host='localhost';//主機
$user='root';//資料庫賬號
$password='';//資料庫密碼
$database='test';//資料庫名
//打開資料庫連接
$db=mysqli_connect($host,$user,$password,$database);
//判斷連接是否成功
if($db){
$db->query("set names utf8");//設置UTF-8編碼(JSON的唯一編碼)
}else{
echo 'DATABASE_CONNECTION_DIE';//資料庫連接失敗
exit;
}
//sql查詢語句
$sql="select id,name,sex,age from person";
$result=$db->query($sql);
while($row=$result->fetch_assoc()){
$person_info[]=$row;//將取得的所有數據賦值給person_info數組
}
echo json_encode($person_info);//輸出JSON
?>
復制代碼
輸出的JSON示例:
[{"id":"1","name":"\u54c8\u5c3c","sex":"\u7537","age":"22"},{"id":"2","name":"\u5c0f\u9648","sex":"\u5973","age":"21"},{"id":"3","name":"\u5c0f\u767d","sex":"\u672a\u77e5","age":"1"}]
復制代碼
3
【測試用的資料庫SQL語句】
--
-- Database: `test`
--
-- --------------------------------------------------------
--
-- 表的結構 `person`
--
CREATE TABLE IF NOT EXISTS `person` (
`id` int(11) NOT NULL,
`name` varchar(5) NOT NULL,
`sex` varchar(2) NOT NULL,
`age` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- 轉存表中的數據 `person`
--
INSERT INTO `person` (`id`, `name`, `sex`, `age`) VALUES
(1, '哈尼', '男', 22),
(2, '小陳', '女', 21),
(3, '小白', '未知', 1);
復制代碼
搞定伺服器端輸出JSON後,重點來了...
4
【端API使用api.ajax讀取介面數據】
點我獲取數據
復制代碼
5
OK,如果要POST方式,請自行參考官方文檔。
思路就是這樣,其它的依此類推:
客戶端發送請求,伺服器端接收處理後返回數據。
用戶登錄和狀態檢查推薦使用token檢驗,不要直接post密碼。
『叄』 php獲得api返回的json數據後,如何解析
返回是json數據,就用 json_decode(api返回的數據,true),轉變成數組就可以在php中操作了。
『肆』 C#如何接受api傳來的json數據
不知道你使用的是哪種api,如果是webapi的話可以用HttpClient 訪問 api 獲取json數據。
『伍』 用PHP調用API返回JSON值,怎麼把JSON返回值調用到html呢
用json_decode()將json字元串轉化成php數組,然後直接循環數組取出值即可版。
<?php
$content= file_get_contents('獲取json字元權串的url');
$content = json_decode($content);//將json字元串轉化成php數組
foreach ($content as $key ) {//循環數組
echo '<li>' . $key['city'] . '</li>';
echo '<li>' . $key['city_en'] . '</li>';
echo '<li>' . $key['date_y'] . '</li>';
echo '<li>' . $key['week'] . '</li>';
}
『陸』 ruby中用js抓取頁面td中內容後,如何將其用json存儲
首選你應該寫jQuery
然後用Ajax的方式 把內容傳給後台,喚源讓Ruby 去解析這些內容, 正則什麼的都可以轉換成你想要的和含態數老仿據。
『柒』 rails怎麼給前端寫api實現前後端分離
Rails的初始准備見:Rails 處理跨站請求
准備完這個,接下來我們就只要管Control怎麼寫就行了。
首先來嘗試一下get,最簡單。
def index json_str = {"xx" => "hello"}.to_json render :json=>json_str, status=>'200' end
在這里我們用了一個to_json方法來處理,把Hash轉換為json格式,to_json方法是Rails中特有的,並非Ruby本身的方法。
接著我們就可以滾去前端了:
在需要調用的位置使用:$http.get('http://localhost:3000');,這是最簡單的獲取方法,當然我們自然不可能獲取了就走人,這只是一個測試,接下來我們要使用then來進行get之後的操作。
提示:使用$http接收之後json都會經過fromJson等一系列方法,務必保證收到的是JSON,否則會報錯。
.then(function(res) { console.log(res); angular.forEach(res.data, function(value, key) { $scope.message.push({author: key, content: value}); });});
我們把get的分號去掉,加上這個,為了確定res收到的是什麼,我們可以在控制台輸出看一下,res.data里存儲的就似乎收到的json(Object),用angular.forEach遍歷即可。
這樣一個簡單的get就完成了。
POST相比較之下就比較折騰了,但也不是很復雜,最主要的是要確定怎麼樣才能獲取POST的值,這里並沒有像$_POST這樣簡單的變數。
在Controller 詳解中我們知道:
如果在初始化腳本中開啟了 config.wrap_parameters 選項,或者在控制器中調用了 wrap_parameters 方法,可以放心的省去 JSON 格式參數中的根鍵。Rails 會以控制器名新建一個鍵,復制參數,將其存入這個鍵名下。因此,上面的參數可以寫成:
{ "name": "acme", "address": "123 Carrot Street" }
會自動進行轉換,然後就可以用對應控制器名來訪問。
這里我們檢查config>initializers的對應文件夾,發現默認開啟,,使用這個黑科技。
def create json_str = params[:article] json_str = json_str.to_json render :json=>json_str, status=>'200' end
我們的Controller是ArticlesController,所以很明顯的這樣子獲取傳進來的值,轉換為json,接著傳出(只是一個測試,理論上接下來要實驗寫入資料庫)。
接下來開始寫前端的部分:$http.post('http://localhost:3000/create', message)簡單的POST操作,嘗試是否成功獲取到值。
post的參數非常有意思:post(url, data, [config]);其中data可以傳入任意類型,他會盡可能的轉換成json傳入,之後獲取到的值也會用fromJson盡可能的轉換,供之後使用。
在post的之後是由是否成功來進行分支處理的,這里我們只寫success。
.success(function(res) { console.log(res); $scope.message.push({author: res.author, content: res.content});});
一樣,可以在控制台看看輸出的值,會發現是一個json的Object,沒有其他信息,直接使用即可。
『捌』 如何用java獲取百度API返回的json數據的
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.UnsupportedEncodingException;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
publicclassHttpRequestUtil{
/**
*從url請求中獲得返回的字元串
*
*@paramrequestUrl
*@returnJSON字元串
*/
publicstaticStringHttpRequest(StringrequestUrl){
StringBuffersb=newStringBuffer();
InputStreamips=getInputStream(requestUrl);
InputStreamReaderisreader=null;
try{
isreader=newInputStreamReader(ips,"utf-8");
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
BufferedReaderbufferedReader=newBufferedReader(isreader);
Stringtemp=null;
try{
while((temp=bufferedReader.readLine())!=null){
sb.append(temp);
}
bufferedReader.close();
isreader.close();
ips.close();
ips=null;
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
/**
*從請求的URL中獲取返回的流數據
*@paramrequestUrl
*@returnInputStream
*/
(StringrequestUrl){
URLurl=null;
HttpURLConnectionconn=null;
InputStreamin=null;
try{
url=newURL(requestUrl);
}catch(MalformedURLExceptione){
e.printStackTrace();
}
try{
conn=(HttpURLConnection)url.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.connect();
in=conn.getInputStream();
}catch(IOExceptione){
e.printStackTrace();
}
returnin;
}
}