snack4 支持小蛇和小驼峰风格，且支持相互转换。



### 1、涉及命名风格转换的特性：

包括了读、写两种时态的特性

| 特性 | 描述 | 
| -------- | -------- | 
| Write_UseSmlCamelStyle                | 写入时名字（强制）使用小骆峰风格     | 
| Write_UseSmlSnakeStyle                | 写入时名字（强制）使用小蛇风格     | 
| Read_ConvertSnakeToSmlCamel     | 读取时小蛇转为小驼峰风格     | 
| Read_ConvertCamelToSmlSnake     | 读取时小驼峰转为小蛇风格     | 

### 2、示例

* Write_UseSmlCamelStyle，写入时名字（强制）使用小骆峰风格 

```java
@Test
public void Write_UseSmlCamelStyle() {
    Map<String, Object> data = new HashMap<>();
    data.put("user_id", 1);

    String json = ONode.serialize(data, Feature.Write_UseSmlCamelStyle);
    Assertions.assertEquals("{\"userId\":1}", json);
}
```

* Write_UseSmlSnakeStyle，写入时名字（强制）使用小蛇风格

```java
@Test
public void Write_UseSmlSnakeStyle() {
    Map<String, Object> data = new HashMap<>();
    data.put("userId", 1);

    String json = ONode.serialize(data, Feature.Write_UseSmlSnakeStyle);
    Assertions.assertEquals("{\"user_id\":1}", json);
}
```


* Read_ConvertSnakeToSmlCamel，读取时把小蛇转为小驼峰

```java
@Test
public void Read_ConvertSnakeToSmlCamel() {
    assert ONode.ofJson("{user_info:'1'}", Feature.Read_ConvertSnakeToSmlCamel)
            .get("userInfo").isString();

    assert ONode.ofJson("{user_info:'1'}")
            .get("userInfo").isNull();
}
```

* Read_ConvertCamelToSmlSnake，读取时把小驼峰转为小蛇

```java
@Test
public void Read_ConvertCamelToSmlSnake() {
    assert ONode.ofJson("{userInfo:'1'}", Feature.Read_ConvertCamelToSmlSnake)
            .get("user_info").isString();

    assert ONode.ofJson("{userInfo:'1'}")
            .get("user_info").isNull();
}
```


