1. json 解析 我該把下面代碼怎麼封裝成對象, 這個 "orderProm": [ ] 應該寫成什麼類型, 謝謝
這是一個Cart對象春棗
裡面有屬性:
cartCount
checked
orderProm
payPrice
postage
savePrice
shopList
totalPrice
[] 是數組的形式,最簡單的是辯森跡字元串數攜並組,或者是對象數組
2. spring mvc 可以自動封裝json對象嗎
可以的
在web程序開發中,前端和伺服器數據的傳輸方式常用的有兩種,一種是以表單的形式提交,此時可以利用jquery的serialize()方法將表單內
容轉為a=1&b=2&c=3&d=4&e=5這樣的格式傳輸過去,接收端則可以用javabean直接接收。
還有一種方式是以json格式傳輸,接收時源宏若直接用bean接收則接收不到,此時應該用@RequestBody方式,需要注意的是接收的需要是json串,而不是json對象,可以在發送前使用JSON.stringify函數進行處理。
例子如下
客戶端:
var url=path+'testConverter.html';
$.ajax(
{
url :
url,
type :
"POST",
dataType:"json",
contentType:'application/json;charset=UTF-8',
data:JSON.stringify({userId:'1',userName:'hello',password:'test',credits:'2',lastIp:'',lastVisit:'1986-05-27'}),
success :
function(data) {
alert(data.userName);
},
error:function(e){
alert("err");
}
服務端:
@RequestMapping(value="/testConverter.html")
@ResponseBody
public User
testConverter(@RequestBody User user)
{
System.out.println(user.getUserName());
user.setUserName("testname");
return
user;
}
上面例子中服務端返回的是個對象,@ResponseBody函數會自動將其轉換為客戶端要睜純求的『
dataType:"json",』格式。
最後需要注意的是
1,在xxx-serverlet配置文件中應該寫上,以便可以使用
@ResponseBody和@RequestBody
2,發送時要寫上 contentType:'application/json'
3,數組內容要用[]而不是list,用list會接收到一個map對象雹早冊,而不是bean
3. json map對象怎麼封裝
用List還是比較難取的,不好定位,用Map定位值。
Map<beanA,Map<"beanA.屬性名",beanB.值>> map = new HashMap<"beanA.Map<"beanA.屬性名",beanB.值>>();
是想在頁面顯示嗎版?用循環吧。權
<c:forEach items="${map}" var="m">
<c:forEach items="${m.key}" var="k">
<c:forEach items="${m.value}" var="v" >
<c:if test="${k.屬性A名稱} eq 'v.值A'}">
</c:if>
<c:if test="${k.屬性B名稱} eq 'v.值B'}">
</c:if>
</c:forEach>
</c:forEach>
</c:forEach>
4. 我在html將form 標簽內的一個表格封裝成 JSON對象,在後台怎麼獲得這個JSON對象
無論你是什麼後台語言,對JavaScript對象都不能直接傳送。辦法也很簡單,就是在JS里把JSON對象轉換成JSON文本,即JSON.stringify(jsonObject)。但通過ajax或form提交到後台,然後在後台將接收到的JSON文本還原成後台語言對應的對象數據。還原工具因不同的後台語言而不同,對不同語言的JSON轉換支持可詳見json官網
5. java中如何將數據封裝為JSON包
直接輸出就可以了
String jsondata = "{'a':" + a + ",'b':" + b + ",'c':" + c + "}";
如果是字元串就加上單引號,如
String jsondata = "{'a':'" + a + "','b':'" + b + "','c':'" + c + "'}";
如果abc是數組
String jsondata = "{'a':[" + a[0] + "," + a[1] + "," + a[2] + "],'b':...}";
如果abc是對象就相對復雜一點
String jsondata = "{'a':{'a_paramStr':'" + a.paramStr + "','a_pramaInt'}:a.pramaInt},'b':...}";
當然,如果對象的成員變數很多,可以可以通過對象遍歷的方式輸出,還有包含子對象、子子對象的情況
總結如下
格式:{'數據名':數據值}
數據值為數字時,直接輸出
數據值為字元串時,用單引號包含值,'數據值'
數據值為數組時,用中括弧包含,[數據值1,數據值2,...]
數據值為對象時,用大括弧包含,{'成員名1':成員數值1,'成員名2':{'成員2對象的成員1','成員2對象的成員1值'},...}
數據與數據之間用逗號隔開,以上
一句話,如果傳送數據很簡單可以自己輸出;如果很復雜,乖乖用三方json包吧,我真不懂為什麼抗拒別人做的車輪
6. json封裝對象 報錯
你從資料庫返回的對象 只是一個實體,但是你轉換成一個JSONARRAY這是不對的,應該轉換成內JSONObject。只有返容回一個list集合時才能轉換成JSONArray。你的報錯信息顯示是因為不能轉換造成的。
應該這么寫:
JSONObjectjson = JSONObject.fromObject(TblDevision);
System.out.println(json.toString());
7. 【JSON】JSON在前端和後端傳遞
後端:我們假定使用的是java語言
前端:毫無疑問是js
java語言:是一種強類型的語言,必須定義類型,然後生成實例;而js卻不是,雖然它也是面向對象的,但是它並沒有先定義類這一種概念(但是js也有類型),它是基於原型的一種模式,和java完全不同。很顯然,二者的原理,機制,語法並不能兼容。二者產生的對象並不能被對方解讀。再來看網路傳輸,通常就是http/tcp協議嘍,使用的其實是請求-響應,再說白了即使字元串,不論後台傳來的是什麼類型的數據,也不論前台傳回的什麼類型的數據,網路層統統當作字元串處理,它也沒有辦法來解析類型啊!說到這里,前後台傳數據也就只能用字元串了,那也就意味著它們各自都要完成一個轉換過程,把要發送的轉換成字元串,把要收到的字元串解析成自己的對象。因為傳輸的字元串會涉及前後台雙方的解析和處理,所以雙方都必須認識或者知道字元串該怎麼轉,也就是說,最好能有一種通用的規則來編輯,轉換字元串,這個標准或者協議就是JSON,JSON就是用來交換數據的,是一種string,一種獨立於平台的數據格式。
這樣一來,前台就需要把自己的數據類型轉成JSON,然後發給後台,後台在用JSON來解析數據,轉換成自己的類型。後台傳前台一樣。那麼,怎麼把自己的數據轉成JSON呢?
`JSON`對象可以通過JavaScript存取屬性!JSON對象封裝成JSON字元串經常用於前後台傳輸數據!
如果在前端使用,那麼JSON對象可以通過 對象.屬性名 來調用,如果是json字元串,那麼只是字元串了!
在數據傳輸過程中,JSON是以文本、即字元串的形式傳遞的,而JavaScript操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。
JSON字元串:var str = '{ name: 'xmt', sex: 'woman' }';
JSON對象: var str = { name: 'xmt', sex: 'woman' };
JSON字元串轉化為JSON對象:var obj = JSON.parse(str) ;
JSON對象轉化為JSON字元串:var str = JSON.stringify(obj);
8. 解析json數組,封裝到三個對象.大神有啥好招沒
使用 gsonT com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException 方法
將EnterConsu Material Procts 分別封裝為javaBean,再創建一個外圍JavaBean,假如為ResBean.java,然後將前面三個作為ResBean 的版list 域,使用fromJson(jsonString,ResBean.class)即可得權到對應的bean對象
9. json字元串怎麼封裝成對象
下載這幾個包,導入項回目,答 JSONObject obj= new JSONOjbect().fromObject(test); JSONObject json= new JSONOjbect().fromObject(obj.getObject("xxx")); System.out.println(json.getString("A")); System.out.println(json.getString("B"));
10. 如何處理常見的JSON嵌套結構
我們繼續之前的話題。很多時候,伺服器返回的JSON都不是一個「扁平」的結構,而是包含了各種嵌套,在這一節,我們就來處理如何把各種嵌套的情況,對應到Swift model。
第一種情況,是用對象封裝數組,例如,伺服器返回了多個視頻信息的JSON:
為了把類似這種情況的JSON直接轉型成model,我們只要定義下面這樣的 struct 就好了:
這里,由於 EpisodeList 和 Episode 都是遵從 Codable 的,因此我們可以直接用之前的方式對JSON解碼:
只是這次,對應的Model類型,變成了 EpisodeList 。執行一下,就能在控制台看到下面這樣的結果:
第二種情況,伺服器還可能直接返回一個數組,而不使用對象封裝它:
對這種情況,我們無須聲明任何新的類型,只要在解碼的時候,指定一個數組類型就好了:
這次,我們就會看到這樣的結果:
第三種情況,可以看成是前面兩種情況的組合,假設數組中的對象,是通過一個Key索引的:
對於這種情況,數組內的結構,可以用 Dictionary<String: Episode> 表示,而整個JSON,則是這種 Dictionary 的數組,於是,在解碼的時候,我們只要把這個類型傳遞給它就好了:坦罩
執行下,就會看到這樣的結果:
在這一節最後,我們結合之前說過的這些情況,看一個更一般的例子,假設我們要給視頻播放的頁面傳遞一個包含所有要顯示內容的JSON,它看上去是這樣的:
為了把這段JSON自動轉型成Swift model,我們新建一個 struct :
它對應JSON頭部視頻信息的部分,這里,由於視頻難度屬於視頻信息的一部分,我們把 EpisodeLevel 定義成了一個內嵌正信升類型。
接下來,JSON的後半段,是系列中每一個視頻的具體信息,這種情況我們已經處理過了,這里,舉老我們把之前定義的類型整理一下:
可以看到,我們把 EpisodeType 也變成了 Episode 的內嵌類型。最後,我們定義一個表示頁面數據的 struct :
這樣, EpisodePage 就完全對應我們上面提到的JSON結構了,接下來,使用用 decode 方法解碼就好:
執行一下,就能看到下面這樣的結果了: