Удаление кавычек в JSONObject - PullRequest
9 голосов
/ 01 июня 2010

Я использую net.sf.json.JSONObject, чтобы создать некоторые данные для отправки во внешнее приложение, и код, с которым я взаимодействую, не любит способы добавления кавычек к каждому имени поля ,

Например:

 myString = new JSONObject().put("JSON", "Hello, World!").toString();

создает строку {"JSON": "Hello, World"}.

То, что я хочу вернуть, это {JSON: "Hello, World"} - без кавычек вокруг "JSON". Что мне нужно сделать, чтобы это произошло?

Ответы [ 5 ]

5 голосов
/ 11 июня 2013

Я сталкивался с несколькими веб-приложениями / библиотеками, такими как amCharts, которые поддерживают JSON, такие как входы JavaScipt, где то, что необходимо для запроса, так как истинный JSON не поддерживается.

Что вы можете сделать, это создать общееФункция javascript и использование небольшого RegEx для фильтрации JSON.

function CleanJSONQuotesOnKeys(json) {
    return json.replace(/"(\w+)"\s*:/g, '$1:');
}
1 голос
/ 01 июня 2010

Javadoc говорит

Тексты, созданные ToString методы строго соответствуют JSON правила sysntax.

Если вы хотите соответствовать правилам синтаксиса JSON, вы не должны удалять кавычки.

Или, если вас не волнуют правила, вы можете создать свой собственный простой метод для создания этих строк.

Также допустимо заменить 2 первых вхождения кавычек, как сказал @CharlesLeaf.

1 голос
/ 01 июня 2010

Определение JSON описывает каждую пару как строку: значение, поэтому нельзя ожидать, что библиотеки net.sf будут противоречить этому конкретному контракту. Если вы беспокоитесь о возможности доступа к значениям, когда они возвращаются в некоторый код javascript (если это то, что вы делаете), вам это не нужно.

var str = {"JSON": "Hello, World"};
var obj = eval(str);
alert(obj.JSON); // Alerts "Hello, World"
1 голос
/ 01 июня 2010

Могу я спросить, почему вы хотите это сделать? Это не поможет сохранить большую часть байтов, передаваемых в запросе.

В любом случае я бы сказал, что вы должны написать что-то, регулярное выражение или что-то еще, что заменяет /\"([^"]+)\"\:/ на первое совпадение $1. Я не владею Java, поэтому больше не могу помочь.

0 голосов
/ 28 октября 2010

Вы можете использовать следующий метод для исключения кавычек из имени свойства в вашем json:

net.sf.json.util.WebUtils.toString(JSONObject);

См. Java DOC :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...