C# 重新映射JSON架构中的无效属性名称
我有大量的外部JSON模式和JSON文档需要作为CSharp项目的一部分进行解析 它们来自一家外部公司,似乎是JSON和其他东西的混合体。 我能够很好地解析JSON,但我需要模式来理解它们 问题来自将“类型”定义为“元数据”以及将实际类型名称重新映射为“数据类型”C# 重新映射JSON架构中的无效属性名称,c#,json.net,C#,Json.net,我有大量的外部JSON模式和JSON文档需要作为CSharp项目的一部分进行解析 它们来自一家外部公司,似乎是JSON和其他东西的混合体。 我能够很好地解析JSON,但我需要模式来理解它们 问题来自将“类型”定义为“元数据”以及将实际类型名称重新映射为“数据类型” { "type": "MetaData", "name": "atypeoffield", "title":
{
"type": "MetaData",
"name": "atypeoffield",
"title": "ancillary data for field type",
"object_ID": "MetaData-atypeoffield",
"parent_object_ID": "fieldreceiver",
"dataType": "object",
"properties": {
"fieldreceivercontrol": {
"description": "ancillary data for control",
"type": "array",
"minItems": 1,
"maxItems": 144,
除了在输入的过程中进行字符串替换之外,还有什么更优雅的方法可以解决这个问题,您可以为Newtonsoft JSON想到吗
我希望动态加载模式,然后使用它们对web服务进行短暂的字段验证,但主要的要求是在运行时动态加载一组模式,以确定要验证的字段我最终使用了字符串替换和正则表达式替换来清理JSON和相关模式,因此我能够获得一个干净的读取
if (matchedJson.Contains("type\":")) matchedJson = matchedJson.Replace("type\":", "metadata_type\":");
if (matchedJson.Contains("dataType\":")) matchedJson = matchedJson.Replace("dataType\":", "type\":");
if (matchedJson.Contains("\\\"")) matchedJson = matchedJson.Replace("\\\"", "\"");
string containsPattern = @"(""config"": ""{)(.*)(""\n})";
string replacement = "$2";
string cleanJson = Regex.Replace(matchedJson, containsPattern, replacement,
RegexOptions.IgnoreCase,
TimeSpan.FromSeconds(0.5));
它当然不优雅,但允许我移动拨号盘,并删除导致模式验证失败的元素。模式有效吗?Newtonsoft有一个单独的包,用于根据…进行解析和验证。。。。看起来不是。使用关键字指示值类型。您的架构似乎正在使用
“数据类型”
。您是否有一些说明模式标准的文档?你能把它重新映射到吗?我已经写了一个正则表达式来重新映射无效的关键字-丑陋的福吉,但它必须这样做!