[VB.NET 2022] JSON Parsing - JSON을 파싱해보자.

2022. 11. 21. 09:54VB.NET

JSON을 파싱하는건 예전 VB6 시절에는 상당히 번거로운 일이었다. 그냥 문서의 처음부터 루프를 돌며 하나씩 분리해서 이름과 값을 직접 때려넣어야 가능한 일이었으니 말이다.

예를 들어 아래 정말 간단한 JSON을 파싱할때 VB6과 VB.NET의 파싱이 어떻게 다른지 보자.

{
   "str_name1" : "str_value1",
   "str_name2" : "str_value2"
}


VB6에서 파싱

Private Function JsonParse_VB6(pSrc As String, pName As String) As String
    Dim lpIdx1 As Integer, lpIdx2 As Integer, lpIdx3 As Integer, lpIdx4 As Integer, lpRet As String
    lpRet = ""

    lpIdx1 = InStr(pSrc, """" & pName & """")
    lpIdx2 = InStr(lpIdx1 + Len("""" & pName & """"), pSrc, ":")
    If lpIdx1 = 0 Or lpIdx2 = 0 Then GoTo EXIT_FUNCTION     ' 찾는 name이 없음

    lpIdx3 = InStr(lpIdx2 + Len(":"), pSrc, """")
    lpIdx4 = InStr(lpIdx3 + Len(""""), pSrc, """")
    If lpIdx3 = 0 Or lpIdx4 = 0 Then GoTo EXIT_FUNCTION     ' 찾는 값이 없음

    lpRet = Mid(pSrc, lpIdx3 + Len(""""), lpIdx4 - lpIdx3 - Len(""""))

EXIT_FUNCTION:
    JsonParse_VB6 = lpRet
End Function


VB.NET 2022에서 파싱

우선 Nuget 패키지관리에서 Newtonsoft.Json을 추가하자. 일은 얘가 다한다.

현재 파일의 맨 위에 Newtonsoft.Json.Linq를 임포트 해주자.

Imports Newtonsoft.Json.Linq

이제 아래 소스와 같이 파싱하면 된다.

Private Function JsonParse_VBNET(pSrc As String, pName As String) As String
    Dim lpJson = JObject.Parse(pSrc)
    Return lpJson.SelectToken(pName).ToString
End Function


VB.NET은 Nuget 패키지에서 제공하는 모든 기능을 사용할 수 있으니 웬만하면 VB6처럼 직접 만들지 말고, 이미 검증된 수많은 기능을 활용하는게 버그발생을 줄이는 지름길이다.

 

 

VB.NET XML 파싱 - XmlDocument 사용

VB.NET HTML 파싱 - XPath를 사용한 HtmlAgilityPack 예제 VB.NET으로 HTML을 파싱하기 위해 예전에는 InStr, Mid, Left 등을 이용해서 하나하나 위치 잡아서 값을 가져왔던 기억이 나는데, 이제는 그럴 필요가 없

chakhani.tistory.com

 

 

VB.NET HTML 파싱 - XPath를 사용한 HtmlAgilityPack 예제

VB.NET으로 HTML을 파싱하기 위해 예전에는 InStr, Mid, Left 등을 이용해서 하나하나 위치 잡아서 값을 가져왔던 기억이 나는데, 이제는 그럴 필요가 없다. 물론 예전 방식으로 작업해도 동작에 무리가

chakhani.tistory.com

 

반응형