2014-10-09 2 views
0

외래 키가있는 테이블로 MS SQL에 연결된 웹 서버가 있습니다. 클라이언트 코드가 하나의 큰 JSON 문자열로 레코드를 보냅니다. 내 서버가 그것을 받아서 적절한 테이블에 레코드를 삽입 할 수 있도록 구문을 분석하고 싶습니다.테이블에 레코드 삽입을위한 JSON 구문 분석

Table1 
{  
    INT PID  
    INT CID  
    STRING firstname   
    STRING lastname  
} 

TABLE2 
{ 
    INT CID 
    INT ORDER 
} 

TABLE1이 외부 키로 CID 있습니다

여기 내 DB 스키마입니다.

샘플 입력 JSON이를위한 가장 좋은 방법 무엇

{ 
TABLE1  
{ 
"firstname":"Tony" 

"lastname":"Stark" 
} 
TABLE2 
{ 
"ORDER":"1234" 
} 
} 

같은 것입니까?

답변

0

클라이언트에서 가져온 JSON은 시스템에 입력되므로 사용자는이를 그렇게 처리해야합니다. 당신의 의견을 절대로 믿지 마라. 그래서 JSON이 당신이 기대하는 것임을 확실히하기 위해 스키마를 검증하라. 물론 오류 처리가 필요하다.

JSON을 구문 분석하려면 newtonsoft JSON.NET을 사용해야합니다. 당신이 개체에 JSON 변환 후

string json = @"{ 
'Name': 'Bad Boys', 
'ReleaseDate': '1995-4-7T00:00:00', 
    'Genres': [ 
    'Action', 
    'Comedy' 
    ] 
}"; 

Movie movie = JsonConvert.DeserializeObject<Movie>(json); 

, 당신은 쉽게 DB에 객체를 유지할 수 있습니다 : 여기

http://james.newtonking.com/json

은 예입니다.

RDBMS 테이블을 Entity Framework 또는 다른 ORM을 사용하여 개체에 매핑하면 deserialize 된 JSON 개체의 저장소가 단순화됩니다. , 직렬화 복원 후 당신이 당신의 입력을 신뢰하지해야하기 때문에

, 나는 당신의 ORM에 직렬화 된 입력 객체를 매핑하는 것이 좋습니다 또는 테이블 개체를 수동으로 또는 당신은 Automapper

http://automapper.org/

+0

문제와 같은 스마트 도구를 사용할 수 있습니다 I 레코드를 삽입 할 테이블을 알아야합니다. 테이블 이름을 알고 있으면 레코드를 삽입해야하는 관련 테이블도 알고 있어야합니다. 어떤 접근 방식을 제안 할 수 있습니까? – user3145865

+0

그게 꽤 복잡한 조각. 나는 두 가지 접근법을 설명했다. 그러나 일이 꽤 복잡해질 수 있습니다. 샘플 JSON 파일 스키마와 DB 스키마로 질문 설명을 확장하면 질문에 쉽게 답할 수 있습니다. –

+0

예를 들어 질문을 편집했습니다. JSON에 런타임시 새로 생성 된 테이블이있을 수 있기 때문에 제네릭 방식을 알려주십시오. – user3145865