Comments (4)
Do you have any progress?
from yamldotnet.
I thought I replied to this, we probably need to create a new IYamlTypeConverter to handle the DateTimeOffset
object type, just like we did with DateTime
.
Here's an example of working code, serializes and deserializes. Not the best, since it uses the local culture or whatever, but it's a starting point
using System.Globalization;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Serialization;
var serializer = new SerializerBuilder().WithTypeConverter(new DateTimeOffsetConverter()).Build();
var d = new DTO();
var yaml = serializer.Serialize(d);
Console.WriteLine(yaml);
var deserializer = new DeserializerBuilder().WithTypeConverter(new DateTimeOffsetConverter()).Build();
d = deserializer.Deserialize<DTO>(yaml);
Console.WriteLine(d.Offset);
class DTO
{
public DateTimeOffset Offset { get; set; } = DateTimeOffset.Now;
}
class DateTimeOffsetConverter : IYamlTypeConverter
{
private readonly bool doubleQuotes;
public DateTimeOffsetConverter(bool doubleQuotes = false)
{
this.doubleQuotes = doubleQuotes;
}
public bool Accepts(Type type)
{
return type == typeof(DateTimeOffset);
}
public object ReadYaml(IParser parser, Type type)
{
var value = parser.Consume<Scalar>().Value;
var result = DateTimeOffset.Parse(value);
return result;
}
public void WriteYaml(IEmitter emitter, object? value, Type type)
{
var dt = (DateTimeOffset)value!;
var formatted = dt.ToString();
emitter.Emit(new Scalar(AnchorName.Empty, TagName.Empty, formatted, doubleQuotes ? ScalarStyle.DoubleQuoted : ScalarStyle.Any, true, false));
}
}
Results in
Offset: 6/17/2023 8:17:48 AM -06:00
6/17/2023 8:17:48 AM -06:00
from yamldotnet.
It's been a couple of months, did the type converter I posted above work for you? Can I close this issue?
from yamldotnet.
I have added a converter into the library itself. You'll need to assign it to the serilizerbuilder and deserializerbuilder in order for it to take effect. There is an example in the samples that show how to do it.
from yamldotnet.
Related Issues (20)
- (Documentation) Unclear how to deserialize into objects HOT 4
- How can I know what value is not property
- Set anchor tag name during serialization using YamlDotNet? HOT 4
- Getting odd hash values in keys HOT 5
- `YamlStream.Load(TextReader)` interprets an empty value as an empty string instead of null. HOT 2
- Emitter doesn't handle comments between the mapping value and key HOT 1
- How to have the `INamingConvention` passed into a custom value converter? HOT 3
- Parser does not recognize quoted keys HOT 2
- Can't handle anchored lists HOT 11
- Cannot parse YAML file, (Line: 2, Col: 3, Idx: 6) - (Line: 2, Col: 3, Idx: 6): Exception during deserialization HOT 2
- Do you think it's useful to add some F# examples along with the C# code? HOT 4
- Schema validation support HOT 10
- Unwanted conversion from a string to a numeric value HOT 1
- missing `IDeserializer object? Deserialize(string input)` method HOT 2
- How to Serialize an object with Directives, start and end marks (---, ...)? HOT 2
- How to forcefully interpret as an array with implied key HOT 3
- YamlStream.Load with JSON with emojis (even escaped) fails: "While scanning a quoted scalar, found invalid Unicode character escape code." HOT 13
- OmitDefaults doesn't work for properties of sub-objects HOT 14
- Polymorphic deserialization - Alias $example_word cannot precede anchor declaration HOT 4
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 yamldotnet.