Возможна ли ссылка на себя в MATLAB?

Есть ли у меня способ сделать Джексона менее требовательным к входному JSON. Например, JSONObject предоставляет следующие разрешения:

Конструкторы более снисходительны к текстам, которые они принимают:

  1. Дополнительная (запятая) может стоять непосредственно перед закрывающей скобкой.
  2. Строки могут заключаться в кавычки с '(одинарная кавычка ).
  3. Строки вообще не нужно заключать в кавычки, если они не начинаются с кавычки или одинарной кавычки, и если они не содержат начальных или конечных пробелов, и если они не содержат ни одного из этих символов: {} знак равно # и если они не похожи на числа, и если они не являются зарезервированными словами true, false или null. *
  4. За ключами может следовать = или =>, а также:.
  5. За значениями могут следовать по ; (точка с запятой), а также через (запятая).
  6. Числа могут иметь префикс 0x- (шестнадцатеричный).

Самым интересным для меня является 3-я точка. Это позволяет выполнить следующее преобразование:

new JSONObject("{A : 1}");

... но для Джексона я получу ошибку с тем же входным json:

new ObjectMapper().readTree("{ A : 1}"); // throws an exception

Исключение:

org.codehaus.jackson.JsonParseException: Unexpected character ('A' (code 65)): was expecting double-quote to start field name
   at [Source: java.io.StringReader@26d4f1; line: 1, column: 4]
at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:943)
at org.codehaus.jackson.impl.JsonParserBase._reportError(JsonParserBase.java:636)
at org.codehaus.jackson.impl.JsonParserBase._reportUnexpectedChar(JsonParserBase.java:569)
at org.codehaus.jackson.impl.ReaderBasedParser._handleUnusualFieldName(ReaderBasedParser.java:342)
at org.codehaus.jackson.impl.ReaderBasedParser._parseFieldName(ReaderBasedParser.java:235)
at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:125)
at org.codehaus.jackson.map.deser.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:180)
at org.codehaus.jackson.map.deser.BaseNodeDeserializer.deserializeAny(JsonNodeDeserializer.java:210)
at org.codehaus.jackson.map.deser.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:52)
at org.codehaus.jackson.map.deser.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:13)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1588)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1130)
14
задан Stu Thompson 28 January 2013 в 17:44
поделиться