2013-04-29 60 views
0

我有一個JSON如下圖所示的Java:從JSON格式

{ 
    "qty": "1", 
    "dswer": 0, 
    "bag": { 
     "dm": "2", 
     "rate": "---", 
     "ghy": "3013-04-05T00:00:00.000-05:00", 
     "dee": "301304", 
     "desc": "SSAA APR 05 2013 --- BGG" 
    } 
} 

我要求確認在Java中值是,如果在上面的JSON是速率屬性---然後把它作爲無效請求。

我不想這個JSON分配到一個Java類,由於種種原因

所以我試圖這樣

package com; 

import java.util.ArrayList; 
import java.util.List; 

public class Test { 

    public static void main(String args[]) { 


     String str = "{\r\n" + 
       " \"qty\": \"1\",\r\n" + 
       " \"dswer\": 0,\r\n" + 
       " \"bag\": {\r\n" + 
       "  \"dm\": \"2\",\r\n" + 
       "  \"rate\": \"---\",\r\n" + 
       "  \"ghy\": \"3013-04-05T00:00:00.000-05:00\",\r\n" + 
       "  \"dee\": \"301304\",\r\n" + 
       "  \"desc\": \"SSAA APR 05 2013 --- CALL\"\r\n" + 
       " }\r\n" + 
       "}"; 

     if(str.contains("rate:---")) 
     { 
      System.out.println("InValid"); 
     } 
     else 
     { 
      System.out.println("Valid"); 
     } 


    } 

} 

但它總是顯示爲有效。

請告訴我如何解決這個問題?

感謝

回答

3
if(str.contains("rate:---")) // is false because 
if(str.contains("\"rate\": \"---\"")) // would be true 
2

if條件必須是這樣的: -

if(str.contains("\"rate\": \"---\"")) 

由於您JSON,兩者rate & ---是雙引號括起來,你需要添加那些您的if條件通過逃脫那些。

即使這可行,我強烈建議您使用org.json.JSONObjectcom.google.gson.JsonObject正確解析您的JSON。