我想将JSON值插入SQL数据库。它正在工作,但主对象中有一个对象,我似乎无法检索它。
这是我的JSON代码
{"items":[{"uid":"b003a6ad8ef543dfbebf3ea2d48a1c33","commStatus":"OK","gateway":{"serialNumber":"CA1331305311005","type":null,"uid":"6b8ca67f3eec46c1a94f535c57dd48a3","imei":"353567040903313","macAddress":null},"subscription":{"identifier":"8927000003268372315","state":"INVENTORY","mobileNumber":null,"networkIdentifier":"655103015669848","uid":"1ba23cc6f6bc4a26b42029e4d5b83d1f","ipAddress":"10.13.14.40","operator":"MTN"},"name":"220"},{"uid":"500ed42280594d5b9a3049db15b6e5c9","commStatus":"OK","gateway":{"serialNumber":"CA1301201391004","type":"GX400","uid":"515334dbf5154911aa019520508b8077","imei":"353567041609349","macAddress":"00:14:3E:11:48:0D"},"subscription":{"identifier":"8927000002300070259","state":"INVENTORY","mobileNumber":null,"networkIdentifier":"655103308678726","uid":"073f0fc7ece240e7807db5bc1538d9ef","ipAddress":"10.13.4.51","operator":"MTN"},"name":"4116"}],"count":380,"size":100,"offset":0}
所以我的第一个问题是,我必须删除{"items":
,否则我不会获得任何值。
{"items":
第二个问题是:网关是另一个对象,所以网关内的任何东西,我都无法接收这些值。我试图获取serialNumber的值,但它返回null。
这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Data.SqlClient;
namespace EMS_AVMS_Retrieval
{
class Program
{
[DataContract]
class items
{
[DataMember]
public string uid { get; set; }
[DataMember]
public string commStatus { get; set; }
[DataMember]
public string serialNumber { get; set; }
}
//[DataContract]
//public class Gateway
//{
// [DataMember]
// public string serialNumber { get; set; }
//}
static void Main(string[] args)
{
string json = @"[{"items":[{"uid":"b003a6ad8ef543dfbebf3ea2d48a1c33","commStatus":"OK","gateway":{"serialNumber":"CA1331305311005","type":null,"uid":"6b8ca67f3eec46c1a94f535c57dd48a3","imei":"353567040903313","macAddress":null},"subscription":{"identifier":"8927000003268372315","state":"INVENTORY","mobileNumber":null,"networkIdentifier":"655103015669848","uid":"1ba23cc6f6bc4a26b42029e4d5b83d1f","ipAddress":"10.13.14.40","operator":"MTN"},"name":"220"},{"uid":"500ed42280594d5b9a3049db15b6e5c9","commStatus":"OK","gateway":{"serialNumber":"CA1301201391004","type":"GX400","uid":"515334dbf5154911aa019520508b8077","imei":"353567041609349","macAddress":"00:14:3E:11:48:0D"},"subscription":{"identifier":"8927000002300070259","state":"INVENTORY","mobileNumber":null,"networkIdentifier":"655103308678726","uid":"073f0fc7ece240e7807db5bc1538d9ef","ipAddress":"10.13.4.51","operator":"MTN"},"name":"4116"}],"count":380,"size":100,"offset":0}]";
//Deserialize the data
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<items>));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json));
var obj = (List<items>)ser.ReadObject(stream);
//Loop thrrouch values and save the details into database
foreach (items p in obj)
{
//Create SQL conection to your database here
using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["my ConnectionString"].ConnectionString))
{
// Open your connection
try
{
cn.Open();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
Console.ReadLine();
Environment.Exit(0);
}
//Change the table name here
string sql = "INSERT INTO tempTableAVMSRetrievals (uid, commStatus, serialNumber, retrievalDate) VALUES (@uid, @commStatus, @serialNumber, @retrievalDate)";
// Create the Command and Parameter objects.
using (SqlCommand cmd = new SqlCommand(sql, cn))
{
//Loop through the and get of parameter values
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@uid", p.uid);
cmd.Parameters.AddWithValue("@commStatus", p.commStatus);
cmd.Parameters.AddWithValue("@serialNumber", "SN");
cmd.Parameters.AddWithValue("@retrievalDate", currentDate);
//Execute the query
try
{
cmd.ExecuteNonQuery();
}
catch(Exception e2)
{
Console.WriteLine(e2.ToString());
Console.ReadLine();
Environment.Exit(0);
}
}
}
}
Environment.Exit(0);
}
}
}