GSOC2025: Json Library for D, weekly update #8
Gaofei
qiugaofei53391 at gmail.com
Tue Aug 12 04:01:56 UTC 2025
Since we've already established a framework for customized
deserialization and added some tests (such as case
insensitivity), we now want to incorporate case insensitivity as
an optional feature into the default deserialization policy.
https://github.com/schveiguy/jsoniopipe/pull/54
https://github.com/schveiguy/jsoniopipe/pull/57
The insensitivity in the test is like:
```d
static struct CaseInsensitivePolicy {
void onField(JT, T, C)(ref JT tokenizer, ref T item,
JSONItem key, ref C context) {
// Case-insensitive comparison
import std.string : icmp;
alias members = SerializableMembers!T;
auto keyStr = key.data(tokenizer.chain);
static foreach(i, memberName; members) {
{
enum jsonName = memberName;
if (icmp(keyStr, jsonName) == 0) {
deserializeImpl(this, tokenizer,
__traits(getMember, item, memberName));
context[i] = true;
return;
}
}
}
throw new JSONIopipeException(format("No member named
'%s' in type `%s`", keyStr, T.stringof));
}
}
```
More information about the Digitalmars-d
mailing list