Comments (6)
For serializing data class to HOCON it would be logical to make an inverse conversion: transform all property names to hyphen-case, unless exact name is specified by annotation.
from config4k.
Thank you for your advice. This change is quite big and may break compatibility. So, it will be implemented in version 4.
from config4k.
#56 addresses the deserializing aspect of this issue. For serialization I would suggest looking at the ConfigSyntax
enum when implementing. According to HOCON standards, properties should be lowercase and hyphenated. It makes sense to serialize in the correct/strict format but have a more flexible deserializer
from config4k.
Nice idea! I think the API should be like below.
object ConfigOption {
// Default value is camelCase, but it can be changed to hyphen-separated
var keyType: ConfigKeyType = ConfigKeyType.CAMEL_CASE
}
enum class ConfigKeyType {
CAMEL_CASE, HYPHEN_SEPARATED
}
How do you think, @ov7a?
from config4k.
In my experience, the common approach to this is to use annotations. (Take a look at jackson, for example).
As user, the most convenient approach for me would be automatic conversion - unless the name is explicitly specified through annotation, first try the exact same name, then try camelCase variant. This would also allow to rename properties.
key = {
camelCaseProperty = value
hyphen-case-propery = value2
trashy_value = value3
}
data class MixedConfig(
val camelCaseProperty: String, //exact name
val hyphenCaseProperty: String, //converted automatically
@ConfigName("trashy_value") //explicit name
val annotatedProperty: String
)
from config4k.
Unfortunately, we don't have a resources for implement this feature, but if someone want to do that, PRs are welcome anytime! 😄
from config4k.
Related Issues (20)
- `java.time.Duration` is not supported when toConfig HOT 2
- Java classes are not supported
- Unresolved class: interface java.util.Map HOT 1
- Fail "toConfig" for Map when key contains special char
- zip file closed HOT 1
- Respect Mutable* (List / Map / Set)
- toConfig does not work with private class HOT 1
- Dependency Dashboard
- Use Kotlin Explicit API Mode
- Case insensitive mapping enum values HOT 2
- Support for value classes HOT 1
- Cannot parse registered custom type from map keys HOT 1
- Extract to data class fails if default and key is kebab case HOT 1
- Extract to data class with path fails if default exists key is kebab case
- Support for `kotlin.time.Duration` HOT 1
- enum with overriden toString can't be serialized and deserialized
- 1.4.2 release was rolled back HOT 6
- Feature request: Support java.net.URL HOT 1
- Does anyone want to manage config4k repository? HOT 8
- It's not on maven HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from config4k.