2016-06-04 2 views
0

Heyy 모두 합치려고합니다 2 JObject 목록. 나는 2 목록 (Of JObject) masterJsonList.Add (jsonWriter.Token)masterJsonListNA.Add (jsonWriter.Token)이라는 이름의입니다.JSON.net 함께 2 목록 (JObject 중) 합치다

구글을 검색 하시나요 masterJsonList에 JObects masterJsonListNA을 결합하는 방법을 나에게 보여줍니다 때 난 아무것도 발견하지 않았습니다.

내가하려고하면 '하는 jobject'로 변환 할 수없는 유형 '(하는 jobject의) 목록'의

오류 BC30311 값 :

masterJsonList.Add(masterJsonListNA) '<-- error here 
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented) 

그것은의 오류를 제공합니다.

masterJsonList.Concat(masterJsonListNA) 
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented) 

CONCAT를 사용하여 오류가 없지만, 난 단지 모두 finalJson하지에 masterJsonList 값을 얻을 :

나는 심지어뿐만 아니라 행운과 함께 다음을 시도 masterJsonList & masterJsonListNA. 연합를 사용

masterJsonList.Union(masterJsonListNA) 
Dim finalJson As String = JsonConvert.SerializeObject(masterJsonList, Formatting.Indented) 

그리고 또 에러가 없지만, 나 또한 다시에만 두 masterJsonList & masterJsonListNAfinalJsonmasterJsonList 값을 얻을 수 없습니다.

은 내가 이렇게하면 작동 알고

Dim combinedJsons As Object = masterJsonList.Concat(masterJsonListNA) 
Dim finalJson As String = JsonConvert.SerializeObject(combinedJsons, Formatting.Indented) 

하지만 그이 일의 올바른 방법이 있는지 알고 싶습니다?

답변

1

예. 귀하의 최종 추측은 정확합니다. 확장 메서드 Concat, Union 등은 호출되는 개체에서 작동하지 않습니다. 대신 그들은 연산의 결과를 담고있는 새로운 객체를 리턴한다.

Dim combinedJsons = masterJsonList.Concat(masterJsonListNA) 

을하지만 당신은 아무것도에 대한 combinedJsons 필요하지 않은 경우 다른 당신은 장소에 목록을 Concat 수 있습니다과 같이, 컴파일러가 추론 할 수 있습니다 - 당신은 실제로 combinedList에 대 한 우리에 As 절을 필요로하지 않습니다 SerializeObject 첫 번째 매개 변수의 : 반면에

Dim finalJson = JsonConvert.SerializeObject(masterJsonList.Concat(masterJsonListNA), Formatting.Indented) 

List<T>.Add() 메소드는 호출 해 인스턴스에서 작동합니까,하지만 그것은 유형 T의 객체 타입 T 아닌 전체 목록을 추가합니다.

+0

지식 bozhidar에게 감사드립니다. – StealthRT

+0

@StealthRT : 이봐, 문제 없어. 다행 이군. 두 번째 목록을 첫 번째 목록에 추가하려면 List .AddRange (IEnumerable )를 사용할 수 있다는 점을 잊어 버렸습니다. AddRange는 추가 목록을 포함하기 위해 호출 된 목록을 변경합니다. –

관련 문제