如何使用Azure函数和C#从JSON文件(filename.json)获取数据

时间:2017-06-19 21:37:28

标签: c# json function azure azure-functions

我刚刚创建了一个我想要触发的Azure功能Azure Blob存储(每当创建一个新的blob时),我想拥有我的功能代码,以便它解析Json文件的内容(filename.json )它是JSON格式,并使用文件的内容来更新数据库的内容,文件的内容如下所示:

{
    "ID": "58",
    "Symbol": "J500",
    "Content": 
      [
        {"Date": "2017-05-15", "Value": "100000"}, 
        {"Date": "2017-05-16", "Value": "200"},
        {"Date": "2017-05-17", "Value": "90000"},
        {"Date": "2017-05-18", "Value": "80000"},
        {"Date": "2017-05-19", "Value": "70000}
      ]
}

我之前几乎没有用C#编写代码,并且认为我可以使用python,但事实证明我只能使用C#,任何有关详细说明和解释的帮助都将非常感激。

我也是Azure的新手,所以如果有人对如何实现我想做的事情有更好的建议(可能是使用不同的触发器或不同的绑定器,甚至使用不同的服务而不是功能),我愿意接受建议,很乐意欣赏它。我目前只有默认代码:

public static void Run(Stream myBlob, string name, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{name}" \n Size: {myBlob.Length} Bytes");
}

另外作为附注,除非我去监视器屏幕,否则我看不到我的日志,对此的任何帮助也将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,有没有理由不能使用Python?对于功能,它的实验'但主要是出于性能原因。它应该能够完成工作。

没有用于blob的Python模板,但是如果您创建了QueueTrigger模板,则可以编辑生成的function.json和python脚本以使其正常工作。

function.json:

{
  "bindings": [
    {
      "name": "input",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-python/{fileName}",
      "connection": "AzureWebJobsStorage"
    }
  ],
  "disabled": false
}

run.py

import os

# read the blob contents and write to stdout
inputMessage = open(os.environ['input']).read()
message = "Python script processed blob '{0}'".format(inputMessage)
print(message)

对于C#来说,这是一个相当广泛的问题,但我可以指出你正确的方向。

首先,您可以使用Json.NET处理.NET中的JSON:http://www.newtonsoft.com/json。 Azure函数内置了支持,因此使用此代码可以将blob文本转换为JObject(Json.NET类型),然后记录它:

#r "Newtonsoft.Json"

using Newtonsoft.Json.Linq;

public static void Run(string myBlob, string name, TraceWriter log)
{
    JObject json = JObject.Parse(myBlob);
    log.Info(json.ToString());
}

从那里,您需要将其放入数据库。如果你正在使用SQL,那么在这里使用SqlClient设置函数是一个很好的指南:https://docs.microsoft.com/en-us/azure/azure-functions/functions-scenario-database-table-cleanup

一旦你使用了SqlClient,就可以获得你的JObject并将其变成Sql记录。这是一个简单的插入示例:C# - SQLClient - Simplest INSERT