小编Ram*_*man的帖子

让杰克逊对输入JSON更友好

我是否有办法让杰克逊对输入JSON不那么严格.例如,JSONObject提供以下允许:

构造者在他们接受的文本中更宽容:

  1. 额外的(逗号)可能出现在右大括号之前.
  2. 字符串可以用'(单引号)引用.
  3. 如果字符串不以引号或单引号开头,并且如果它们不包含前导或尾随空格,并且它们不包含任何这些字符,则根本不需要引用字符串:{} []/\: ,=; #并且如果它们看起来不像数字,并且它们不是保留字true,false或null.*
  4. 键后面可以是=或=>以及:.
  5. 价值观可以跟随; (分号)以及(逗号).
  6. 数字可以具有0x-(十六进制)前缀.

对我来说最有趣的是第3点.它允许以下转换:

new JSONObject("{A : 1}");
Run Code Online (Sandbox Code Playgroud)

...但对于杰克逊,我将使用相同的输入json得到错误:

new ObjectMapper().readTree("{ A : 1}"); // throws an exception
Run Code Online (Sandbox Code Playgroud)

例外:

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)
Run Code Online (Sandbox Code Playgroud)

java json jackson deserialization

14
推荐指数
1
解决办法
3万
查看次数

PermGen Out of Memory原因

我经常在PermGen中检测我的环境中的OOM:

  1. java 6
  2. 的jboss-4.2.3
  3. 不是一个大的网络应用程序

我知道String.intern()问题 - 但我没有足够的宝贵用法.MaxPermGen尺寸的增加不会产生任何影响(从128 Mb到256 Mb).

还有什么其他原因可以为PermGen调用OOM?在这种情况下(战略,工具等),最佳调查方式是什么?

谢谢你的帮助

java jboss out-of-memory permgen

6
推荐指数
2
解决办法
2万
查看次数

标准MBean的描述

我想在JBoss jmx-console中使我的标准MBean详细.DynamicMBean有getMBeanInfo()来做.方法返回MBeanInfo,其中包含MBean的描述.但是我怎么能为Standard MBean做同样的事情呢?例如,我有以下MBean接口:

public interface MyMBean {
  String f();
}
Run Code Online (Sandbox Code Playgroud)

......以下实施:

public class My implements MyMBean {
  public String f() {
    return "test";
  }
}
Run Code Online (Sandbox Code Playgroud)

在这样的例子中应该怎么做才能添加描述?

谢谢

java jboss jmx

5
推荐指数
1
解决办法
6166
查看次数

IntelliJ Idea无法与svn update一起正常工作

我在IntelliJ Idea社区版中的svn更新或比较操作期间经常遇到相同的错误:

svn: E175002: Received fatal alert: unexpected_message
svn: E175002: OPTIONS request failed on '/projects/repo/home/.'
Run Code Online (Sandbox Code Playgroud)

环境:

  • IntelliJ Idea社区版12.0.3
  • SVN 1.7.7
  • Windows 7 x64

但是从命令行可以很好地工作:

D:\projects\repo\home>svn update
Updating '.':
At revision 382293.
Run Code Online (Sandbox Code Playgroud)

有想法日志:

2013-02-05 00:43:53,684 [  17976]   INFO -  org.jetbrains.idea.svn.SvnVcs - SENT
OPTIONS /projects/repo/home HTTP/1.1
Host: subversion.repo.home.com
User-Agent: SVN/1.7.7 SVNKit/1.7.7-SNAPSHOT (http://svnkit.com/) r9513_v20121218_1752
Keep-Alive:
Connection: TE, Keep-Alive
TE: trailers
Content-Length: 0
Accept-Encoding: gzip
Content-Type: text/xml; charset="utf-8"
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth
DAV: http://subversion.tigris.org/xmlns/dav/svn/mergeinfo
DAV: http://subversion.tigris.org/xmlns/dav/svn/log-revprops


2013-02-05 00:43:53,957 [  18249]   INFO -  org.jetbrains.idea.svn.SvnVcs - socket output …
Run Code Online (Sandbox Code Playgroud)

svn intellij-idea

5
推荐指数
2
解决办法
1万
查看次数

用于XML编辑的HTML组件

我应用html HTML页面编辑并在服务器上发送xml.为了使它更有用,我希望基于HTML的决策具有以下属性:

  1. 在编辑期间突出显示XML语法(必需);
  2. 重量轻(例如5+ Mb太多)(必填)
  3. 即时或通过请求验证XML(例如通过按下按钮)(可选)
  4. 是免费的(非常需要,但如果它确实涵盖了所有要求,我愿意接受付费决定);

谢谢你的任何建议!

html javascript css xml

4
推荐指数
1
解决办法
7023
查看次数

mongo集合中的数据碎片

我在一个mongo集合中有很多更新,并在此之后假设文件系统存在巨大的碎片.我主要担心的是,收集将在文件系统上不断增长而不会在收集中有价值地增长数据.

你能否确认或反驳我的担忧?

mongodb

3
推荐指数
1
解决办法
1987
查看次数

Java通过字符串数组迭代并在循环中一次返回

我已经做了很多搜索,但只能找到不适用的实现(例如使用随机,我已经有).漂亮的菜鸟问题,非常感谢任何帮助.

我有一个字符串数组,目前我通过一个简单的函数返回一个随机函数,我实现为一个按钮的onCLick值,代码如下.因此,每次有人点击bottun时,都会设置一个新字符串.

我想要做的是从上到下遍历数组,一次返回一个字符串,然后重新开始.我怀疑可能有几种方法可以做到这一点,任何建议?非常感谢提前!

public class FirstActivity extends Activity {

  private TextView myStringView;
  private static final Random RANDOM = new Random();
  String myString;


  //....my other code


  private static final String[] MYSTRINGS = {
      "string a",
      "string b",
      "string c"
  };

   public void generateString(View v) {

      int myStringsLength = MYSTRINGS.length;
      String myString = MYSTRINGS[RANDOM.nextInt(myStringsLength)];
      myStringView.setText(myString);

  }
}
Run Code Online (Sandbox Code Playgroud)

java arrays string

0
推荐指数
1
解决办法
1590
查看次数