将数据表字符串从Azure ML WS转换为实际的Datatable C#Object?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据表字符串从Azure ML WS转换为实际的Datatable C#Object?相关的知识,希望对你有一定的参考价值。

基本上我从我的azure ws输出中收到这样的输出:

{
    'Results': {
        'WSOutput': {
            'type': 'table',
            'value': {
                'ColumnNames': ['ID', 'Start', 'Ask', 'Not', 'Passed', 'Suggest'],
                'ColumnTypes': ['Int32', 'Int32', 'Int32', 'Double', 'Int64', 'Int32'],
                'Values': [['13256025', '25000', '19000', '0.35', '1', '25000']]
            }
        }
    }
}

如您所见,字符串具有创建数据表对象的信息。现在,我似乎无法找到一种简单的方法将其转换为实际的数据表POCO。我能够使用Newtonsoft.Json.Linq手动编写解析器代码,但必须有一个更简单的方法。

有人知道吗?我似乎无法在网上找到任何东西。

答案

是的,网上有一个开源的在线gernator(http://jsonutils.com/)。复制粘贴你的结果会给你:

 public class Value
    {
        public IList<string> ColumnNames { get; set; }
        public IList<string> ColumnTypes { get; set; }
        public IList<IList<string>> Values { get; set; }
    }

    public class WSOutput
    {
        public string type { get; set; }
        public Value value { get; set; }
    }

    public class Results
    {
        public WSOutput WSOutput { get; set; }
    }

    public class Example
    {
        public Results Results { get; set; }
    }
另一答案

我正在回答我自己的问题,尽管马丁应该是被接受的那个。

我最终编码了我自己可怕的变压器,如下所示:

var parsedJson = JObject.Parse(jsonn);
            var length = parsedJson["Results"]["WSOutput"]["value"]["Values"][0].Count();
            IDictionary<string, object> flexibleJson = new ExpandoObject();

            for (int i = 0; i < length; i++)
            {
                string colName = parsedJson["Results"]["WSOutput"]["value"]["ColumnNames"][i].ToString();
                string colValue = parsedJson["Results"]["WSOutput"]["value"]["Values"][0][i].ToString(); // single result for now
                flexibleJson.Add(colName, colValue);
            }

            var serialized = JsonConvert.SerializeObject(flexibleJson);

然后使用它,您可以使用json.net将其反序列化为datatable =)

以上是关于将数据表字符串从Azure ML WS转换为实际的Datatable C#Object?的主要内容,如果未能解决你的问题,请参考以下文章

XML 到 Azure ML Studio

如何在 ML Azure Pipeline 中使用环境

如何按照基于 ml 的分类顺序将十六进制字符串转换为有意义的数据?

Unity 无法从“字符串”转换为“整数”

在 Microsoft Azure ML Studio 数据集中选择列会改变变量类型

Azure ML 操作:工作区身份验证错误