⑴ java中怎麼過濾沒有用的欄位返回到前台的數據
1 不用框架
傳統方式用jdbc讀取資料庫數據到resultset,
a 通過json工具內:將resultset中數據寫到容list里,通過json工具(如fastjson)轉換成json字元串,返回到前台
b 直接通過resultset吧數據拼寫成json格式字元串寫到前台
2 框架
如struts2+spring, jdbctemple支持將讀取結果直接返回給list, 將result類型設置生json即可,前台可直接獲取json數據
⑵ 急,請問摳網頁的時候怎樣去掉json格式的數據,比如京東主頁,一大堆都是json格式數據
以前在培訓的時候,學到的頁面要獲取json的內容,那麼我們要在action里使用這樣一些內容
PrintWriter out = response.getWriter();
現在發現有root這么一個參數可以處理,就可以省略上面的這種寫法,這樣看似上去是不是更加方便呢。
看我下面標紅的地方
struts2 處理json
<package name="default" extends="struts-default">
<package name="default" extends="json-default">
.Action中的配置
<action name="testAction" class="com.json.action.TestAction" method="testMethod">
<interceptor-ref name="json" /><!--處理以JSON.前台歸回的json字元串,是把action中的所有屬性全數轉化為json字元串歸回給瀏覽器了,但是我有時 辰需要根據實況歸回部門結果,如何對json的結果進行定製輸出呢?result供給了一些參數替你解決這個問題
5.1. root參數:從歸回結果中根據ognl表達式掏出你需要輸出的結果
如:
action類
Java代碼
public class BaseAction extends ActionSupport implements
{
private Person person = null;
}
public class BaseAction extends ActionSupport implements {private Person person = null;...}
bean類 1
Java代碼
public class Person
{
private String name;
private int age;
}
Java代碼
public class Person {private String name;private int age;...}
我們只要輸出person對象的name屬性值,配置如次
1
Java代碼
<result type="json">
<param name="root">person.name</param>
</result>
<result type="json">
<param name="root">person.name</param>
</result>
5.2. excludeNullProperties 參數:表示是不是去掉空值, 默認值是false,如果設置為true會自動將為空的值過濾,只輸出不為空的值。
Java代碼
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
Java代碼
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
5.3. ignoreHierarchy 參數:表示是不是紕漏等級,也就是繼承關系,好比:TestAction繼承於BaseAction,那麼TestAction中歸回的json字元串默 認是不會包含父類BaseAction的屬性值,ignoreHierarchy值默認為true,設置為false後會將父類以及子類的屬性一起歸回。
Java代碼
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
5.4. includeProperties 參數:輸出結果中需要包含的屬性值,這搭正則表達式以及屬性名匹配,可以用「,」分割填充多個正則表達式。
如:輸出person的所有屬性
Java代碼
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>
<result type="json">
<param name="includeProperties">person.*,person\.name</param>
</result>
5.5. excludeProperties 參數:輸出結果需要剔掉的屬性值,也支持正則表達式匹配屬性名,可以用「,」分割填充多個正則表達式,大致相同4.4.
⑶ json如何過濾不需要的類
你是用什麼語言處理JSON的object?
我因為工作需要,做的是C語言中的JSON數據處理。其實,JSON有專門提回供一個 For_each_object(object,key, value)的函答數(名稱可以不同的語言有所不同)。它可以讀出一個JSON類(或者是Object)中所有的Key,以及相應的Value。
這其實是一個遍歷JSON數據中所有Key的循環。你要做的是在這個循環中把需要的Key和Value重新寫入一個新的Json類中。這個也是有函數提供的。
你最好去看看相應的API說明,或者是函數說明(在C語言中,就是去看看頭文件里的說明)。
⑷ 如何過濾掉json字元串裡面的反斜杠
你這個不算標準的JSON格式數據,可以先將\"替換成"即可。
再用json_decode()系統函數將其轉為json對象,如需轉為數組加上第二個參數為true即可。
若仍輸出為NULL,是由於存在BOM頭信息,
$arr = json_decode(trim($json,chr(239).chr(187).chr(191)),true);
轉換即可。
⑸ Struts2基於注釋的Json屬性過濾如何實現
1. 有個excludeProperties屬性,這個復是通過正則匹配製上而過濾的。
要過濾多個話,就用逗號分隔。
2. @Result(name = Action.SUCCESS, type = "json", params = {
"excludeProperties","pageList\\.\\list[\\d+\\]\\.tbGrpInfo\\.(tbGrpEmps.*|tbGrpSets.*|tbGrpDepts.*){1}", //過濾的值(我用的是hibernate,這里是過濾集合中tbGrpInfo這個對象,但是tbGrpInfo個對象包含了tbGrpEmps,tbGrpSets,tbGrpDepts對象,因此都需要過濾,{1}這個表示只要有其中一個就過濾掉)
"includeProperties", "success,msg,pageList.*" //返回的值
}),
⑹ fastjson 過濾多餘的欄位!
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(實體類.class, "欄位名回","欄位名");
答 JSON.toJSONString(list, filter);