如何使用';转换字符串;标签';如何在java中使用json?

如何使用';转换字符串;标签';如何在java中使用json?,java,json,Java,Json,我在java中有一个字符串,可能如下所示: String str = "Hello this is #David's first comment #excited" JSONObject json = new JSONObject(); json.put("firstString", str); String jsonString = json.toString(); 我想将此字符串转换为json对象,但在使用以下命令时会引发错误: JSONObject json = new JSONObj

我在java中有一个字符串,可能如下所示:

String str = "Hello this is #David's first comment #excited"
JSONObject json = new JSONObject();
json.put("firstString", str);
String jsonString = json.toString();
我想将此字符串转换为json对象,但在使用以下命令时会引发错误:

JSONObject json = new JSONObject(str);
我发现它由于“#”符号而抛出错误。

有没有其他方法可以轻松地将字符串转换为json?

问题不在于“#”符号;这是因为您试图解析字符串,就好像它已经是JSON一样。你可能想要这样的东西:

String str = "Hello this is #David's first comment #excited"
JSONObject json = new JSONObject();
json.put("firstString", str);
String jsonString = json.toString();
或者更简单地说(如果您只需要一个带引号的JSON字符串:

String jsonString = JSONObject.valueToString(str);

问题不在于“#”符号,而在于您试图解析字符串,就好像它已经是JSON一样。您可能需要这样的内容:

String str = "Hello this is #David's first comment #excited"
JSONObject json = new JSONObject();
json.put("firstString", str);
String jsonString = json.toString();
或者更简单地说(如果您只需要一个带引号的JSON字符串:

String jsonString = JSONObject.valueToString(str);


您是否尝试过JSON解析库,如Jackson或Gson?请从示例字符串中识别属性和值(因为您的字符串与JSON完全不同,并且没有任何说明如何解释它)@DanW:Gson不允许您将字符串转换为JSON,它只允许将实体转换为字符串。@sagarvikani否-Gson同时转换两种方式:JSON-->对象和对象-->JSON。此外,您似乎有点困惑:“JSON”是字符串(就像XML和CSV是字符串一样)@除了波希米亚人之外,JSON字符串只有两种有效形式:
[“a string”]
{“key”:“a string”}
。给定所提供的示例,新的
JSONObject
对象的键是什么?您是否尝试过像Jackson或Gson这样的JSON解析库?请确定示例字符串中的属性和值(因为您的字符串与json一点也不相似,也没有说明如何解释它)@DanW:Gson不允许您将字符串转换为json,它只允许将实体转换为字符串。@sagarvikani No-Gson同时转换两种方式:json-->object和object-->json。此外,您似乎有点困惑:“json”是一个字符串(就像XML和CSV是字符串一样)@Bohemian,除了,JSON字符串只有两种有效形式:
[“a string”]
{“key”:“a string”}
。给定所提供的示例,新的
JSONObject
对象的键是什么?好吧,这里是交易,我有一个字符串,看起来像这个字符串commentStr={subjectCategory:“s123”,subjectId:“111222333”,content:“testcomment111”,ownerId:“111”,ownerName:“tester”}我希望它是这样的:{“subjectCategory:“s123”,“subjectId:“111222333”,“content:“testcomment111”,“ownerId:“111”,“ownerName:“tester”}所以现在我要做的是:JSONObject json json=new JSONObject(commentStr);这适用于所有字符串,但在string@sagarvikani-这很奇怪。根据的,“#”字符不是保留字符之一。尽管如此,也许您可以通过将字符串中的“#”替换为“\u0023”(用于“#”的JSON Unicode转义序列)来解决此问题。顺便问一下,引发了什么异常?json.JSONException:63处的未终止字符串[字符64第1行]我在这里的一篇帖子上找到了一个解决方案,上面说了同样的事情。我将不得不将#转换为它的十六进制代码。我希望有一种更简单的方法。我遇到了一个类似的问题,但它最终与JSON解析器无关。它是一个自定义解析器,它将字符串拆分为以
字符作为分隔符的部分。好了吗我有一个字符串commentStr={subjectCategory:“s123”,subjectId:“111222333”,content:“test comment111”,ownerId:“111”,ownerName:“tester”}我希望它是这样的:{“subjectCategory:“s123”,“subjectId:“111222333”,“content:“test comment111”,“ownerId:“111”,“ownerName:“tester”}所以现在我要做的是:JSONObject json=newjsonobject(commentStr);它适用于所有字符串,除了在string@sagarvikani-这很奇怪。根据的,“#”字符不是保留字符之一。尽管如此,也许您可以通过将字符串中的“#”替换为“\u0023”来解决此问题(用于“#”的JSON Unicode转义序列)。顺便问一下,引发了什么异常?JSON.JSONException:63处的未终止字符串[字符64第1行]我在这里的一篇帖子上找到了一个解决方案,上面说了同样的事情。我必须将#转换为它的十六进制代码。我希望有一种更简单的方法。我遇到了一个类似的问题,但它最终与JSON解析器无关。这是一个自定义解析器,它将字符串拆分为以
字符作为分隔符的部分。