Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NewtonSoft反序列化嵌套JSON Blue Prism_C#_Json_Nested_Ocr_Blueprism - Fatal编程技术网

C# NewtonSoft反序列化嵌套JSON Blue Prism

C# NewtonSoft反序列化嵌套JSON Blue Prism,c#,json,nested,ocr,blueprism,C#,Json,Nested,Ocr,Blueprism,我使用Blue Prism调用Microsoft计算机视觉API来识别PDF中的文本 获取JSON响应后,Blue Prism使用Blue Prism的JSON实用程序或Microsoft Computer Vision skill:Get Read Operation response上提供的操作将其转换为一个集合(DataTable) 问题:在某些情况下,由于数据类型错误,Blue Prism无法将JSON文本解析到集合中 有人能建议一个代码将这种类型的JSON结构转换成Blue Prism

我使用Blue Prism调用Microsoft计算机视觉API来识别PDF中的文本

获取JSON响应后,Blue Prism使用Blue Prism的JSON实用程序或Microsoft Computer Vision skill:Get Read Operation response上提供的操作将其转换为一个集合(DataTable)

问题:在某些情况下,由于数据类型错误,Blue Prism无法将JSON文本解析到集合中

有人能建议一个代码将这种类型的JSON结构转换成Blue Prism可以读取的数据表吗

我已经为2个JSON附加了pastebin链接(正文限制为30000个字符,不能在这里复制)

可在蓝色棱柱体中读取(包含特殊字符!”#$%&/()”):

在蓝色棱镜中不可读:

Blue Prism给出以下错误:

使用“获取读取操作响应”操作:

内部:数组中出现意外错误数据类型不匹配:元素“3”的类型不是预期的类型“System.Double”

使用“Blue Prism的JSON实用程序”:

内部:无法执行代码阶段,因为代码阶段引发异常:数组中的数据类型不匹配

我试图通过使用json2csharp.com提供的工具创建公共类,将嵌套的JSON解析为数据表,然后指向它们并写入数据表。我还尝试不创建类,只通过指向属性recognitionResults将JSON直接解析到数据表

不上课:

DataSet ds=JObject.Parse(json_txt)[“识别结果”].ToObject()

课程:

DataTable dt=(DataTable)JsonConvert.DeserializeObject(json_txt,(typeof(DataTable))

课程:

public class Word
{
    public List<double> boundingBox { get; set; }
    public string text { get; set; }
    public string confidence { get; set; }
}

public class Line
{
    public List<double> boundingBox { get; set; }
    public string text { get; set; }
    public List<Word> words { get; set; }
}

public class RecognitionResult
{
    public int page { get; set; }
    public double clockwiseOrientation { get; set; }
    public double width { get; set; }
    public double height { get; set; }
    public string unit { get; set; }
    public List<Line> lines { get; set; }
}

public class RootObject
{
    public string status { get; set; }
    public List<RecognitionResult> recognitionResults { get; set; }
}
公共类单词
{
公共列表边界框{get;set;}
公共字符串文本{get;set;}
公共字符串置信度{get;set;}
}
公共班级线
{
公共列表边界框{get;set;}
公共字符串文本{get;set;}
公共列表字{get;set;}
}
公共类识别结果
{
公共整型页{get;set;}
公共双时钟方向{get;set;}
公共双宽度{get;set;}
公共双倍高度{get;set;}
公共字符串单元{get;set;}
公共列表行{get;set;}
}
公共类根对象
{
公共字符串状态{get;set;}
公共列表识别结果{get;set;}
}
以下是嵌套的集合在Blue Prism中的外观:

如果您使用的是版本6或更高版本,您应该看看Blue Prism DX,它是社区的一个分支,用户可以在这里交流VBO和知识。这个问题已经解决了:

此实用工具提供了将JSON解析为集合的功能,以及将集合转换为JSON的功能


根据@MikeRs的答案,使用蓝色棱镜DX可以很容易地解决这个问题,但是使用


通过技能发送文件,并使用输出检索Blue Prism格式的数据项中的分析。

您能否将您的问题分享给我们一个您试图反序列化的JSON示例,即a?您使用的是哪种Blue Prism版本?这比在某些最新版本的6.x中更容易实现。@dbc我编辑了这个问题,请检查它。@esqew我使用的是6.5.0版本。它并不总是有效的,请参考问题附带的两个文件。正如我在问题中解释的,这两个文件都是Microsoft Vision Skill和Blue Prism DX的JSON实用程序,这两种方法都适用于将JSON解析到集合中的大多数情况。不一定。@David您使用的是哪个版本的Microsoft Azure计算机视觉技能?我的理解是,该技能的v2.0版(链接在上面的答案中)不再遇到此问题。我仍然得到相同的内部错误:数组中的意外错误数据类型不匹配:元素“3”具有类型而不是预期的类型“System”。Double“error我确实升级到v2.0版,但仍然得到相同的错误。你还有别的解决办法吗?