小编Fré*_*ric的帖子

杰克逊反序列化错误处理

我的问题很简单:我有以下简单的类:

public class Foo {
   private int id = -1;
   public void setId(int _id){ this.id = _id; }
   public int getId(){ return this.id; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试处理以下JSON:

{
  "id": "blah"
}
Run Code Online (Sandbox Code Playgroud)

显然,这里有一个问题("blah"无法解析为int)

以前,Jackson会抛出类似org.codehaus.jackson.map.JsonMappingException的东西:无法从String值'blah'构造java.lang.Integer的实例:不是有效的Integer值

我同意这一点,但我想在某处注册一些允许忽略这种映射错误的东西.我尝试使用注册的DeserializationProblemHandler(参见此处),但它似乎只适用于未知属性而不是反序列化问题.

你对这个问题有什么线索吗?

java json jackson deserialization

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

在Javascript中检索表单的"name"属性,而存在名称为"name"的输入

我有类似这样的HTML结构:

   <form name="myvalue" id="hello">
      <input type="text" name="name" />
    </form>
Run Code Online (Sandbox Code Playgroud)

我想通过跨浏览器解决方案在Javascript中检索表单的name属性.

明显,

document.getElementById("hello").name 
Run Code Online (Sandbox Code Playgroud)

将无法工作,因为它将返回相应的输入对象.

在chrome下,以下代码可以正常工作,但我没有成功找到Internet Explorer 8的等效代码

document.getElementById("hello").getAttribute("name")
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

弗雷德里克

javascript forms attributes dom

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

在 Typescript 中的 const 数组上进行类型安全查找

我想知道是否可以find()在 const 数组上创建类型安全:

const MY_ARRAY = [
  { id: "a", name: "AAA" },
  { id: "b", name: "BBB" },
  { id: "c", name: "CCC" },
] as const;

type MyArrayId = (typeof MY_ARRAY[number])["id"]

function find<ID extends MyArrayId>(id: ID): MyTypesafeArrayFind<ID> {
  return MY_ARRAY.find(entry => entry.id === id);
}

// TODO: here lies the problem :)
type MyTypesafeArrayFind<ID extends MyArrayId> = unknown 

const typesafeResult = find("a");
// I'd expect `typeof typesafeResult` to be { id: "a", name: "AAA" }
// …
Run Code Online (Sandbox Code Playgroud)

typescript

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

每个级别定义1个logback文件

我想定义一个能够执行以下操作的logback配置文件:

  • 在debug.log中记录DEBUG(和更高版本)的东西
  • 在info.log中记录INFO(和更高版本)的东西

也就是说,当我打电话时:

logger.warn("blah"); // Logs to both info.log and debug.log
logger.debug("bleh"); // Logs to debug.log only
Run Code Online (Sandbox Code Playgroud)

可能吗 ?

我试过这样的事情,但似乎当logback遇到多个<root>标签时,它只需要最后一个:

<appender name="infoFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${LOGS_FOLDER}/info.log</File>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>
<appender name="debugFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>${LOGS_FOLDER}/debug.log</File>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<root level="INFO">
  <appender-ref ref="infoFile" />
</root>
<root level="DEBUG">
  <appender-ref ref="debugFile" />
</root>
Run Code Online (Sandbox Code Playgroud)

这里,info.log包含调试级日志:(

请注意,我想在每个包上应用此行为.

java logging logback

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