Java:从JSON格式检查Java中的值

Java:从JSON格式检查Java中的值,java,json,Java,Json,我有一个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" } } 我的要求是,如果上述Json中的rate属性

我有一个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"
    }
}
我的要求是,如果上述Json中的rate属性为-,则将其视为无效请求

出于各种原因,我不想将此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");
        }


    }

}
但它总是显示为有效

请告诉我如何解决这个问题


如果

您的状况需要这样,请感谢:-

if(str.contains("rate:---")) // is false because
if(str.contains("\"rate\": \"---\"")) // would be true
if(str.contains("\"rate\": \"---\""))
因为在JSON中,
rate
&
--
都包含在双引号中,所以需要通过转义将它们添加到
if
条件中


即使这样做可行,我强烈建议您使用
org.JSON.JSONObject
com.google.gson.JSONObject
正确解析JSON,前提是条件必须是:-

if(str.contains("\"rate\": \"---\""))
因为在JSON中,
rate
&
--
都包含在双引号中,所以需要通过转义将它们添加到
if
条件中

即使这样做可行,我强烈建议您使用
org.JSON.JSONObject
com.google.gson.JSONObject
正确解析JSON