在Ballerina中将String转换为JSON

z5btuh9x  于 2023-10-21  发布在  其他
关注(0)|答案(3)|浏览(106)

有没有办法在Ballerina中将string转换为json
我找到了this PR - Add jsons:parse() method to get a JSON from a string,它说添加支持解析stringjson,但找不到任何例子。
我尝试了以下方法:

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

但它给了我一个错误:

undefined package 'jsons'
undefined function 'parse'
neekobn8

neekobn81#

在ballerina中将string转换为json的正确方法是使用StringReaderreadJson函数。你所尝试的是一种不再支持的旧方法。
下面的例子展示了如何使用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

nfg76nw0

nfg76nw02#

从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);
    }
lb3vh1jj

lb3vh1jj3#

您也可以使用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();

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

相关问题