iT邦幫忙

0

用JSON處理接收到的資料的方法?

今天,假如我接收到後端傳送過來的資料(ajax傳送)內容如下

  1. "{ "result": "OK", "Weather": "Failure" }"
  2. "{ "result": "Error", "Weather": "sunnyday" }"
    我想用JSON來處理這兩筆資料並用alert來顯示result的值(OK or Error),那我可以用甚麼方式寫??
    (我有想過用response.split的方式,但不管我怎麼割都不是我想要的結果)
1
Homura
iT邦研究生 1 級 ‧ 2018-11-29 13:59:08
最佳解答

我想用JSON來處理這兩筆資料

JSON就是你的資料啊....
應該說用JS處理吧..

(我有想過用response.split的方式,但不管我怎麼割都不是我想要的結果)

這句話看得出來你不懂JSON的構成
JSON資料格式就只是物件和陣列的組成
不過你給的例子比較像給你一個JSON字串
所以要用JSON.parse()轉成JSON物件才行

var data = JSON.parse('{ "result": "OK", "Weather": "Failure" }');
alert(data.result);

假如那串字串被放在一個變數中我該如何做?
一樣用JSON.parse轉換為物件嗎?
但這樣轉換是不是就不知道內容了?
我非常天真地做了下面那件事

var data = JSON.parse(response);
alert(data);

後來再次思考大神寫的內容後改正了,多謝大神教導。

柯柯 iT邦新手 5 級 ‧ 2018-11-29 15:09:24 檢舉

response 原本就是JSON的話
直接取response.result 就可以取到了

Homura iT邦研究生 1 級 ‧ 2018-11-29 15:14:52 檢舉

看起來比較像是直接給JSON
好像很少後端是給JSON字串的/images/emoticon/emoticon06.gif

0
浩瀚星空
iT邦高手 1 級 ‧ 2018-11-29 15:06:31

那個,你有說用到ajax。
是否可以了解一下你的ajax是用jquery還是自已寫的。

如果是jquery的話。本身ajax就可以宣告回傳值是json格式還是文字格式。不需要再用JSON.parse的方式轉換才對。
JSON.parse是要給字串組合後。轉換為json物件使用的。

要用對方式來處理。不要用補破網的方式。

嗯 應該說是後端傳來的就是以逗號分隔開來的兩個字串

如果可以先從後端處理為json格式。
並使用jquery的ajax的話。就可以直接宣告為 dataType : "json"
這樣回傳的資料就是json的物件。
不需要再利用 JSON.parse 重新轉換。

但如果像你說的,後端並非是json格式。你可能需要自行組合字串值的。那的確需要JSON.parse來幫你處理組合好的字串。

是的,所以我最後還是使用JSON.parse來處理
/images/emoticon/emoticon12.gif

0
Joe
iT邦新手 4 級 ‧ 2018-11-29 20:34:11

$.ajax({
type: "POST",
url: window.location.protocol + "//" + window.location.host + "/api/Web/DataSetting",
data: jsondata,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {

--------------------------------------------------------------

if (result.result == OK) {
    alert(result.Weather);
  } else {
    alert(result.Weather);
  }
  
  -------------------------------------------------------------
}, error: function () {
}

}).done(function () {
return false;
});

我要發表回答

立即登入回答