我刚刚创建了一个我想要触发的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");
}
另外作为附注,除非我去监视器屏幕,否则我看不到我的日志,对此的任何帮助也将非常感激。
谢谢!
答案 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