2017-08-24 127 views
0

我的這些JSON對象,我讀得很好,但是當我讀到的OAuth值我有一個空的結果,閱讀內JSON對象德爾福

我怎樣才能看懂了嗎?

{ 
     "status": true, 
     "message": "Success", 
     "items": { 
      "id": 6, 
      "name": "Tesst1", 
      "email": "[email protected]", 
      "image": "https://www.website.com/images/man.png", 
      "created_at": "2017-08-24 09:18:15", 
      "updated_at": "2017-08-24 09:18:15", 
      "oauth": { 
       "token_type": "abc", 
       "expires_in": 1296000, 
       "access_token": "jI5NiwiZXhGVzIjpbXX0.RaC3ixxUeyYnCB6vNlwKsdjf09UeOwUJlcKmKErmE_LTAeQ-4fm8iBOKqUgpikTkyB3ztDGf4DAsaeEjUMqH76jZdbPHnX0vr676dCXkEunWoDEB8sYiHz7XRVgQ5W0O9yybA93mPO_XyrWPibkGW7GLQOApRD605N0e6vw0v9Kb_WQBim7zjTNqoLM1fSjgKJezFqf9_s3KIqBc4bjsayYLl7duzo2fzRmWtnGFfbsgO6YcaIz8ezNtWbtixLRMKnJEj1-MluqjWubsbq_gTI6yiyyac3_oY22Ge0QDdCtljadgO7wRz5VT5aJkxmJRB90u0ovm0tpGzYOO_4giY-J5egpOptjt2VZbPeM-vWPEo4-c6NYMZx6WqxBHjkZwiKUsM-tufzl5P5lFRJ9V_rBUBHEiSonTAk9FVDAwjqLc6N_IC1lsFDEC_3NBy4", 
       "refresh_token": "def502003e7826477c1072497ad66d7f11ea29e81a0fafef6223a63b6a0a3d18de71165afb9a340d10facca3ac7ee955aac5786a5c66a39cdf77e3f6449458e07271cbcde699aabf4d7f72dad10d586c37497216552f88460e50e9ea4944214984d5b23bac04b5f8265d132" 
      } 
     } 
    } 

如果我讀的OAuth作爲JSON對象我得到了不支持的轉換異常,從TJSONObject

轉換爲字符串不支持

什麼是錯的用我的代碼?

if JsonRespnse <> '' then 
    begin 
     jsonObiekt := TJSONObject.ParseJSONValue 
     (TEncoding.ASCII.GetBytes(JsonRespnse), 0) as TJSONObject; 
     try 
     try 
      LoginValue := jsonObiekt.get('status').JsonValue; 
      LoginValueIsTrue := StrToBool(LoginValue.value); 

      if LoginValueIsTrue = True then 
      begin 
      ItemsValue := jsonObiekt.get('items').JsonValue; 
      if ItemsValue is TJSONObject then 
      begin 
       strIdValue := ItemsValue.GetValue<string>('id'); 
       // strOuthValue := ItemsValue.GetValue<string>('oauth'); 
       OauthValue := TJSONObject(ItemsValue).get('oauth').JsonValue; 
       if OauthValue is TJSONObject then 
       Memo1.Lines.Add('oauth : ' + OauthValue.value); 
      end; 
      end; 
     except 
      on E: Exception do 
      ShowMessage('Read JSON : ' + E.Message); 
     end; 
     finally 
     jsonObiekt.Free; 
     end; 
    end; 

回答

2
strOuthValue := ItemsValue.GetValue<string>('oauth'); 

不工作,因爲它不是在TJSON *類的上下文中的字符串。關鍵的oauth就像'items'一樣是一個json對象。

像你這樣做是與「items.id」

if OauthValue is TJSONObject then 
begin 
    Memo1.Lines.Add('oauth : ' + TJSONObject(OauthValue).ToString); 
    Memo1.Lines.Add('oauth.token_type: ' + TJSONObject(OauthValue).Values['token_type'].ToString); 
end; 

這是否覆蓋你的問題,你可以閱讀的OAuth對象的值是多少?

+0

謝謝你的答覆,但問題是你如何得到'OauthValue'的OAuth的內容? –

+0

@Phillipp H. oauth是項目對象中的一個對象。 –

+1

在我的回答是一個示例,顯示如何讀取oauth對象的值。 –