格式化和缩进 VB6 中的 JSON 字符串。

3

我只有这个字符串:

dim stringa as string

stringa="{"data":{"GET:oauth.openapi.it\/counters":{"counter":22,"paid":0,"limit":false},"GET:oauth.openapi.it\/scopes":{"counter":6,"paid":0,"limit":false},"POST:oauth.openapi.it\/token":{"counter":1,"paid":0,"limit":false},"GET:imprese.openapi.it\/advance":{"counter":14,"paid":0,"limit":false},"GET:imprese.openapi.it\/base":{"counter":2,"paid":0,"limit":false}},"success":true,"message":"","error":null}"

都在同一行上。

是否可能缩进,并以典型的 JSON 格式结束,类似于:

{
"data":{
    "GET:oauth.openapi.it/counters":{
        "counter":22,
        "paid":0,
        "limit":false
    },
    "GET:oauth.openapi.it/scopes":{
        "counter":6,
        "paid":0,
        "limit":false
    },
    "POST:oauth.openapi.it/token":{
        "counter":1,
        "paid":0,
        "limit":false
    },
    "GET:imprese.openapi.it/advance":{
        "counter":14,
        "paid":0,
        "limit":false
    },
    "GET:imprese.openapi.it/base":{
        "counter":2,
        "paid":0,
        "limit":false
    }
},
"success":true,
"message":"",
"error":null
}

在这种情况下,我可以更好地看到节点的排列。

1
VBA 还是 VB6?这是两个不同的东西。 - FunThomas
1
VBA还是VB6?这两个是不同的东西。 - FunThomas
1
VBA还是VB6?这是两回事。 - undefined
对不起,实际上我需要VB6。 - user1579247
使用此问题中提到的JSON库之一VB6 / VBA是否有JSON解析器?来解析您的字符串并将其序列化回字符串。它们应该具有创建相应缩进的选项。 - derpirscher
显示剩余3条评论
1个回答

4
你可以像这样使用JsonDump函数:
Option Explicit

Private Sub Form_Load()
    Dim stringa As String
    stringa = "{""data"":{""GET:oauth.openapi.it\/counters"":{""counter"":22,""paid"":0,""limit"":false},""GET:oauth.openapi.it\/scopes"":{""counter"":6,""paid"":0,""limit"":false},""POST:oauth.openapi.it\/token"":{""counter"":1,""paid"":0,""limit"":false},""GET:imprese.openapi.it\/advance"":{""counter"":14,""paid"":0,""limit"":false},""GET:imprese.openapi.it\/base"":{""counter"":2,""paid"":0,""limit"":false}},""success"":true,""message"":"""",""error"":null}"
    
    Dim oJson As Object
    Set oJson = JsonParseObject(stringa)
    Debug.Print JsonDump(oJson, MaxWidth:=0)
End Sub

即时窗口

{
    "data": {
        "GET:oauth.openapi.it/counters": {
            "counter": 22,
            "paid": 0,
            "limit": false
        },
        "GET:oauth.openapi.it/scopes": {
            "counter": 6,
            "paid": 0,
            "limit": false
        },
        "POST:oauth.openapi.it/token": {
            "counter": 1,
            "paid": 0,
            "limit": false
        },
        "GET:imprese.openapi.it/advance": {
            "counter": 14,
            "paid": 0,
            "limit": false
        },
        "GET:imprese.openapi.it/base": {
            "counter": 2,
            "paid": 0,
            "limit": false
        }
    },
    "success": true,
    "message": "",
    "error": null
}

首先,你需要在你的项目中包含mdJson.bas

JsonDump 还有其他参数,除了 MaxWidth,它们也会影响输出结果。


谢谢兄弟,工作完美!但是能否将新的结果保存在c:\mydir\new_jon.txt中? - user1579247
2
@user1579247 Luca!兄弟!这是一个超级简单的初学者任务,你已经问了这些问题好几年了!试着自己做一下,或者在vbforums.com上搜索类似“如何使用VB6编写文本文件”的内容。 - wqw
2
@user1579247 Luca!兄弟!这是一个超级简单的初学者任务,你已经问了这些问题好几年了!试着自己做一下或者在vbforums.com上搜索类似“如何使用VB6编写文本文件”的内容。 - wqw
2
@user1579247 Luca!兄弟!这个超级简单的初级任务你已经问了好几年了!试着自己做一下,或者在vbforums.com上搜索一下类似“如何使用VB6编写文本文件”的内容。 - undefined
谢谢!好的,帮了我大忙。 - user1579247
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接