将 JSON 导入到 SQL
Import JSON to SQL
我正在通过 Azure Functions 将 webhook 导入 SQL 数据库。
当我导入时使用
{
"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;}
}
如何获取嵌套的 JSON 对象?
基本上您可以嵌套您的 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;
我正在通过 Azure Functions 将 webhook 导入 SQL 数据库。
当我导入时使用
{
"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;}
}
如何获取嵌套的 JSON 对象?
基本上您可以嵌套您的 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;