在 Ballerina 中将字符串转换为 Json

问题描述 投票:0回答:3

有没有办法在 Ballerina 中将

string
转换为
json

我发现这个 PR - 添加 jsons:parse() 方法从字符串中获取 JSON,其中说添加对解析

string
json
的支持,但找不到任何示例。

我尝试了以下方法:

string person = {"name":"John", "address":{"number":89, "street":"main street", "town": "Colombo"}};
json personJson = sons:parse(person);

但是它给了我一个错误:

undefined package 'jsons'
undefined function 'parse'
json string type-conversion ballerina
3个回答
8
投票

在 ballerina 中将

string
转换为
json
的正确方法是使用
readJson
中的
StringReader
函数。您尝试的是一种不再受支持的旧方法。

以下示例展示了如何使用

StringReader
来完成此操作。

import ballerina/io;

public function main(string... args) {
    string str = "{\"name\":\"John\", \"address\":{\"number\":89, \"street\":\"main street\", \"town\":\"Colombo\"}}";
    io:StringReader sr = new(str, encoding = "UTF-8");
    json j = check sr.readJson();
    io:println(j);
}

有关

StringReader
的更多信息可以从文档中找到 - https://ballerina.io/learn/api-docs/ballerina/io.html#StringReader


4
投票

从 Ballerina swan Lake 开始,您可以使用

fromJsonString()
方法将字符串转换为 json:

    string jsonStr = "{\"key\": \"value\"}";
    json|error converted = jsonStr.fromJsonString();
    if (converted is error) {
        io:println("Error in parsing json");
    } else {
        io:println(converted);
    }

0
投票

您还可以使用

fromJsonStringWithType()
方法直接将类似 JSON 的字符串转换为用户定义的类型。这样就可以更轻松地访问类似 JSON 的字符串中的内容。

type Address record {
    int number;
    string street;
    string town;
};

type Person record {
    string name;
    Address address;
};

string personString = string `{"name": "John", "address":{"number": 89, "street": "main street", "town": "Colombo"}}`;
Person person = check personString.fromJsonStringWithType();

注意:如果字符串中有很多特殊字符需要转义,我们可以使用上面的字符串模板表达式。这将提高代码的可读性

© www.soinside.com 2019 - 2024. All rights reserved.