VSマクロの変換Jsonデータフォーマット.

5023 ワード

IE 9+,Chrome,JsonのKey順に並べ替えられます.このアプローチは、順序を必要とするデータにとって、災害です.
 
次のようにフォーマットをカスタマイズします.
1.文字列
2.ツリー構造がありません.
3.{}フラグがありません.
4.各オブジェクトは「,」で区切られます.
5.各キー値ペアは「:」で区切られます.
 
元Json:{"Id":1,"Name":"張三"}
変換後:「Id:1,Name:張三」
Sub Json2MyStringJson()
        Dim strJson As String
        Dim ja As String()      'json array
        Dim jsa As String()     ' json sub array

        Dim retVal As New List(Of String)()
        Dim pja As String()     ' p proced json array
        Dim pjsa As String()    ' p proced json sub array

        strJson = DTE.ActiveDocument.Selection.Text

        strJson = strJson.Trim()

        If (strJson.StartsWith("{") And strJson.EndsWith("}")) Then


            strJson = strJson.Substring(1, strJson.Length - 2).Trim()

            ja = strJson.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

            For Each a In ja

                jsa = a.Trim().Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

                retVal.Add(jsa(0).Trim().Trim(""""c) + ":" + jsa(1).Trim().Trim(""""c))
            Next


            DTE.ActiveDocument.Selection.Text = """" + String.Join(",", retVal.ToArray()) + """"
        Else : MsgBox("Json        {    } ")
        End If
    End Sub