gpt4 book ai didi

java - 如何使用 net.sf.json 库验证给定字符串是否有效 JsonArray

转载 作者:行者123 更新时间:2023-11-30 09:18:56 26 4
gpt4 key购买 nike

我正在使用 net.sf.json 库进行 json 到 java 的转换,反之亦然

我有以下字符串:

String jsonStr = "{\"name\" : \"abc\",\"address\"  : \"def\"}";    // line 1

我尝试使用下面的代码将上面的字符串验证为有效的 json 数组:

JSONArray arr = JSONArray.fromObject(jsonStr);      // line 2
System.out.println(arr.isArray()); // line 3

但我在第 2 行得到以下异常

Exception in thread "main" net.sf.json.JSONException: A JSONArray text must start with '[' at character 1 of {"name" : "abc","address"  : "def"}
at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:527)
at net.sf.json.JSONArray._fromJSONTokener(JSONArray.java:1146)
at net.sf.json.JSONArray._fromString(JSONArray.java:1226)
at net.sf.json.JSONArray.fromObject(JSONArray.java:151)
at net.sf.json.JSONArray.fromObject(JSONArray.java:129)
at com.example.WsClient.main(WsClient.java:2) //

现在 JSONArray 类中没有静态方法来验证它是否为有效的 json 字符串,所以我必须创建一个 json 数组然后验证它。但是我在创建数组时遇到异常。那我该如何使用这个方法呢?

我如何验证上面的字符串是一个有效的 json 数组

编辑: 目前字符串是一个对象,但如果我创建一个以字符串作为参数的方法来转换为 jsonArray。我如何验证字符串是否为有效的 json 数组?

最佳答案

来自 net.sf.json.JSONArray.fromObject() 文档:

Throws: JSONException - if the object can not be converted to a proper JSONArray.

所以您已经通过异常验证了您的字符串,并且您知道这不是一个有效的 JSON 数组字符串。如果您获得此 JSON 字符串作为方法参数,您可以重新抛出异常(通过您的方法),或在本地处理(通过返回 null)。

isArray() 方法是 JSON 接口(interface)的一部分,由 JSONArray 实现。

boolean isArray() Returns true if this object is a JSONArray, false otherwise.

如果您实际上已经解析了 JSON 数组并且您的对象是 JSONArray,我希望您稍后可以调用它。

我想说的是,您不需要特别检查此字符串是否有效。您有两个解决方案:

public XXX parseYourString(String json) throws net.sf.json.JSONException {
JSONArray arr = JSONArray.fromObject(json);
// do something with arr and return custom result
}

或:

public XXX parseYourString(String json) {
XXX xxx = new XXX();
try {
JSONArray arr = JSONArray.fromObject(json);

// do something with arr

} catch (JSONException ex) {
return null;
}
return xxx;
}

关于java - 如何使用 net.sf.json 库验证给定字符串是否有效 JsonArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com