Como forçar o JSONObject.put do JSON-lib (..) a escapar de uma string que contém JSON?

Quando usar JSON-lib'sJSONObject, como posso parar oput método de armazenar uma String que contém JSON como JSON em vez de uma string de escap

Por exemplo

JSONObject obj = new JSONObject();
obj.put("jsonStringValue","{\"hello\":\"world\"}");
obj.put("naturalStringValue", "\"hello world\"");
System.out.println(obj.toString());
System.out.println(obj.getString("jsonStringValue"));
System.out.println(obj.getString("naturalStringValue"));

prints:

{"jsonStringValue":{"hello":"world"},"naturalStringValue":"\"hello world\""}
{"hello":"world"}
"hello world"

e eu quero imprimir:

{"jsonStringValue":"{\"hello\":\"world\"}","naturalStringValue":"\"hello world\""}
{"hello":"world"}
"hello world"

Sim, eu sei que isso é desagradável. No entanto, isso é compatível com um pipeline de serialização JSON para o qual, por uma questão de interoperabilidade, esse é o comportamento esperado. Há casos em que estaríamos serializando a entrada do usuário que pode conter / conter JSON válido. Não queremos que a entrada do usuário se torne parte do objeto JSON para o qual estamos serializando a entrad

escape manual não funciona porque faz com que o JSON-lib escape do\ personagens

JSONObject obj = new JSONObject();
obj.put("naturalJSONValue","{\"hello\":\"world\"}");
obj.put("escapedJSONValue", "{\\\"hello\\\":\\\"world\\\"}");
System.out.println(obj.toString());
System.out.println(obj.getString("naturalJSONValue"));
System.out.println(obj.getString("escapedJSONValue"));

Saída

{"naturalJSONValue":{"hello":"world"},"escapedJSONValue":"{\\\"hello\\\":\\\"world\\\"}"}
{"hello":"world"}
{\"hello\":\"world\"}

esse momento, qualquer solução alternativa para permitir o escape seletivo manual de um objeto JSON complexo negaria completamente o valor do uso do JSON-lib em primeiro luga

Além disso, entendo que esta pergunta foi feitaante, mas infelizmente não posso aceitar sua resposta tão facilmente. O JSON-lib é uma dependência muito usada em muitas áreas do meu projeto e trocá-lo seria uma grande tarefa. Eu preciso ter certeza absoluta de que não há como atingir esse objetivo com o JSON-lib antes que eu possa trocar uma troca por Jackson, simple-json ou Gso

questionAnswers(2)

yourAnswerToTheQuestion