如何使用 Azure 函数和 C# 从 JSON 文件 (filename.json) 获取数据
How to get data from a JSON file (filename.json) using Azure functions and C#
我刚刚创建了一个 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");
}
另请注意,除非我转到监视器屏幕,否则我无法看到我的日志,我们也非常感谢您对此提供任何帮助。
谢谢!
首先,有什么理由不能使用Python?对于 Functions,它是 'experimental' 但主要是出于性能原因。它应该能够完成工作。
没有用于 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#,这是一个相当宽泛的问题,但我可以为您指明正确的方向。
首先,您可以在 .NET 中使用 Json.NET: http://www.newtonsoft.com/json 来处理 JSON。支持内置于 Azure Functions,因此使用此代码,您可以将 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 在 Functions 中进行设置:https://docs.microsoft.com/en-us/azure/azure-functions/functions-scenario-database-table-cleanup.
一旦您的 SqlClient 开始工作,就可以获取您的 JObject 并将其转换为 Sql 记录。这是一个简单的插入示例:C# - SQLClient - Simplest INSERT
我刚刚创建了一个 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");
}
另请注意,除非我转到监视器屏幕,否则我无法看到我的日志,我们也非常感谢您对此提供任何帮助。
谢谢!
首先,有什么理由不能使用Python?对于 Functions,它是 'experimental' 但主要是出于性能原因。它应该能够完成工作。
没有用于 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#,这是一个相当宽泛的问题,但我可以为您指明正确的方向。
首先,您可以在 .NET 中使用 Json.NET: http://www.newtonsoft.com/json 来处理 JSON。支持内置于 Azure Functions,因此使用此代码,您可以将 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 在 Functions 中进行设置:https://docs.microsoft.com/en-us/azure/azure-functions/functions-scenario-database-table-cleanup.
一旦您的 SqlClient 开始工作,就可以获取您的 JObject 并将其转换为 Sql 记录。这是一个简单的插入示例:C# - SQLClient - Simplest INSERT