Newton 을 이용하면 좋겠지만 사용하지 못할 사정이 있어서요. ㅠㅠ
서버에서
{“SendData”: [ {“CTRLR_EQUIP_NO”: “1”, “CTRLR_NM”: “김용”}, {}… ] }
이런형식으로 되 있습니다. 위 Json string 에서 [] 배열부분을 추출하여
루프를 돌려서 데이타를 받고 싶은데
sendData 는 Console.WriteLine(sendData) 찍어본 결과 :
System.Collections.Generic.List`1[System.Object]
이렇게 나옵니다.
그런데 JSON내장객체로 이렇게 실행하면 Exeption 오류가 잔뜩나옵니다. ㅠㅠ
var cardData = System.Text.Json.JsonSerializer.Deserialize<Card[]>(sendData);
아래는 코딩중에는 오류(킺줄)이 안나옵니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IgsCommon.IOC;
using IgsCommon.IOC.Attibutes;
using IgsCommon.Util.Helper;
using AppWatchService.Api.Model;
using IgsCommon.Handler.DB;
using IgsCommon.Logger;
using System.Text.Json;
namespace AppWatchService.Api.Service
{
[Injection(ServiceName = "PROCESS.ADD_PROCESS", InterfaceType = typeof(IApiService), LifeCycle = LifeCycle.Singleton)]
class ProcessAddService : BaseApiService
{
IOCContainer.FindService<FaceFeatureContainer>("CONTAINER.FEATURE");
//private ICommonLogger _logger = IGSLoggerFactory.LOGGER;
private SmartSqlHandler _dbHandler = IOCContainer.FindService<SmartSqlHandler>("DB.FR_SERVER");
protected override ResponseApiVO InternalExecute(Dictionary<string, object> inboundParam)
{
ResponseApiVO retVO = new ResponseApiVO();
// string domainId = inboundParam["DOMAIN_ID"].Nvl();
// string visitorId = inboundParam["VISITOR_ID"].Nvl();
// string cardNo = inboundParam["CARD_NO"].Nvl();
string sendData = inboundParam["SendData"].Nvl();
//string jsonString = "[{\"Id\":1,\"Address\":{\"Zip\":\"98052\",\"State\":\"WA\"}}]";
//string jsonString = "[{\"Id\":\"이\"}, {\"Id\":\"백\"}, {\"Id\":\"원\"}]";
string jsonString = sendData;
JsonDocument jdom = JsonDocument.Parse(jsonString);
JsonElement jroot = jdom.RootElement;
for (int i = 0; i < jroot.GetArrayLength(); i++)
{
JsonElement jaddr = jroot[i].GetProperty("CTRLR_EQUIP_NO");
//string zip = jaddr.GetProperty("Zip").GetString();
Console.WriteLine(jaddr.GetString());
}
Console.Read();
}