将JSON导入SQL
我正在通过Azure函数将webhook导入SQL数据库 当我使用将JSON导入SQL,json,azure,azure-functions,Json,Azure,Azure Functions,我正在通过Azure函数将webhook导入SQL数据库 当我使用 { "remote_address": "1234", } { "transaction": { "remote_address": "1234", } } 这很有效 但是当我使用 { "remote_address": "1234", } { "transaction": { "remote_addre
{
"remote_address": "1234",
}
{
"transaction": {
"remote_address": "1234",
}
}
这很有效
但是当我使用
{
"remote_address": "1234",
}
{
"transaction": {
"remote_address": "1234",
}
}
它不起作用
我拥有的Azure功能代码是:
using System.Net;
using Dapper;
using System.Data.SqlClient;
using System.Configuration;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
var successful =true;
try
{
var cnnString = ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString;
using(var connection = new SqlConnection(cnnString))
{
connection.Open();
var rLog = await req.Content.ReadAsAsync<LogRequest>();
// insert a log to the database
connection.Execute("INSERT INTO [dbo].[TABLE] ([COLUMN]) VALUES (@remote_address)", rLog);
log.Info("Log added to database successfully!");
}
}
catch
{
successful=false;
}
return !successful
? req.CreateResponse(HttpStatusCode.BadRequest, "Unable to process your request!")
: req.CreateResponse(HttpStatusCode.OK, "Data saved successfully!");
}
public class LogRequest
{
public int Id{get;set;}
public string remote_address{get;set;}
}
使用System.Net;
使用整洁;
使用System.Data.SqlClient;
使用系统配置;
公共静态异步任务运行(HttpRequestMessage请求、TraceWriter日志)
{
log.Info($“C#HTTP触发器函数处理了一个请求。RequestUri={req.RequestUri}”);
var成功=真;
尝试
{
var cnnString=ConfigurationManager.ConnectionString[“sqlConnection”].ConnectionString;
使用(var连接=新的SqlConnection(cnnString))
{
connection.Open();
var rLog=await req.Content.ReadAsAsync();
//将日志插入数据库
执行(“插入到[dbo].[TABLE]([COLUMN])值(@remote_address)”,rLog);
log.Info(“日志已成功添加到数据库!”);
}
}
抓住
{
成功=错误;
}
回来!成功
?req.CreateResponse(HttpStatusCode.BadRequest,“无法处理您的请求!”)
:req.CreateResponse(HttpStatusCode.OK,“数据保存成功!”);
}
公共类日志请求
{
公共int Id{get;set;}
公共字符串远程地址{get;set;}
}
如何获取嵌套的JSON对象?基本上,您可以嵌套您的C#类,以便它们对应于JSON结构:
public class Transaction
{
public string remote_address { get; set; }
}
public class LogRequest
{
public Transaction transaction { get; set; }
}
基本上,您可以嵌套您的C#类,以便它们对应于JSON结构:
public class Transaction
{
public string remote_address { get; set; }
}
public class LogRequest
{
public Transaction transaction { get; set; }
}
要详细介绍Mikhail的好答案,根据您的需求,有时最容易使用
JObject/dynamic
var jobjectBody = await req.Content.ReadAsAsync<JObject>();
dynamic dynamicBody = jobjectBody;
string remote_address = dynamicBody.transaction.remote_address;
var jobjectBody=wait req.Content.ReadAsAsync();
动态dynamicBody=jobjectBody;
字符串remote\u address=dynamicBody.transaction.remote\u address;
要详细介绍Mikhail的好答案,根据您的需求,它有时最容易使用JObject/dynamic
var jobjectBody = await req.Content.ReadAsAsync<JObject>();
dynamic dynamicBody = jobjectBody;
string remote_address = dynamicBody.transaction.remote_address;
var jobjectBody=wait req.Content.ReadAsAsync();
动态dynamicBody=jobjectBody;
字符串remote\u address=dynamicBody.transaction.remote\u address;
对于此选项,如何使其与连接字符串一起工作?类似于:connection.Execute(“插入[dbo].[TABLE]([COLUMN])值(@remote_address)”,jobjectBody)
只需将remote\u address
传递到Execute()?类似于:connection.Execute(“插入[dbo].[TABLE]([COLUMN])值(@remote_address)”,jobjectBody)代码>只需将远程地址
传递到Execute()