使用仅值json和json java

使用仅值json和json java,java,json,Java,Json,我正在使用json java库解析一些json文件。我正在将文件读入字符串,然后将其发送到JSONObject()。当json文件包含对象时,例如: { “天”:365 } 它很好用。我的问题是“仅值”json或“json文本”。根据RFC,所有这些都是有效的json文本值: 以下是三个仅包含值的小JSON文本: “你好,世界!” 42 真的 但是,当调用jsonObject时,会抛出以下错误 Exception in thread "main" org.json.JSONException:

我正在使用json java库解析一些json文件。我正在将文件读入字符串,然后将其发送到
JSONObject()
。当json文件包含对象时,例如:

{
“天”:365
}

它很好用。我的问题是“仅值”json或“json文本”。根据RFC,所有这些都是有效的json文本值:

以下是三个仅包含值的小JSON文本:

“你好,世界!”

42

真的

但是,当调用
jsonObject
时,会抛出以下错误

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
这是我的电话

JSONObject jsonObj = new JSONObject("Hello world!");
它似乎和数字一样工作

JSONObject jsonObj = new JSONObject(42);
但不是以字符串形式表示的数字

JSONObject jsonObj = new JSONObject("42");
同样的道理也适用于中国

JSONObject jsonObj = new JSONObject(true);
JSONObject jsonObj = new JSONObject("true");
解析字符串时是否存在问题?还是我做得不对?出现这个问题是因为我正在将文件的内容读入字符串,然后将构建的信息字符串发送到
JSONObject
。 这意味着
“你好,世界!”
从来都不起作用,但它也意味着
42
永远不起作用,因为从文件中读入后,它会变成
“42”
,并且由于它现在将其视为字符串而中断


有没有一种方法可以使用该库同时解析“json文本”输入?

我怀疑该库试图将字符串用作键而不是字符串值,这对于json来说似乎是一个非常奇怪的用例。为什么您希望JSON对象中只有一个值?是的。最好将文件作为{fileContents:”“}传递,然后它始终是一个JSON对象。RFC 7159明确指出“JSON解析器必须接受符合JSON语法的所有文本”,因此问题变成了(1)为什么JSON java不支持这一点,他是否误用了API,或者(2)他在哪里可以找到符合RFC 7159的解析器(很遗憾,这超出了so的范围…),Google的gson库似乎只解析值JSON文本,非常好,
Integer fromJson=create.fromJson(“6”,Integer.class)。这是一个很受欢迎的库,所以我只想使用它。我怀疑库试图使用字符串作为键而不是字符串值,这对于JSON来说似乎是一个非常奇怪的用例。为什么您希望JSON对象中只有一个值?是的。最好将文件作为{fileContents:”“}传递,然后它始终是一个JSON对象。RFC 7159明确指出“JSON解析器必须接受符合JSON语法的所有文本”,因此问题变成了(1)为什么JSON java不支持这一点,他是否误用了API,或者(2)他在哪里可以找到符合RFC 7159的解析器(很遗憾,这超出了so的范围…),Google的gson库似乎只解析值JSON文本,非常好,
Integer fromJson=create.fromJson(“6”,Integer.class)。这是一个很受欢迎的图书馆,所以我就用它。