将JSON值插入字符串

kx7yvsdv  于 2023-08-08  发布在  其他
关注(0)|答案(4)|浏览(130)

我正在编写一个应用程序/类,它将接收一个模板文本文件和一个JSON值,并将插入的文本返回给调用者。
输入模板文本文件的格式需要确定。举例来说:第一个月
JSON示例:

{"fullName": "Elon Musk"}

字符串
预期输出:

"my name is Elon Musk"


我正在寻找一个广泛使用的库/格式,可以完成这一点。
1.模板文本文件应采用何种格式?
1.什么样的库支持上面定义的模板文本文件格式并接受JSON值?
构建我自己的解析器很容易,但是有很多边缘情况需要处理,我不想重新发明轮子。
例如,如果我们有一个稍微复杂的JSON对象,它包含列表、嵌套值等。那么我也必须考虑这些并加以实施。

i1icjdpr

i1icjdpr1#

我一直使用org.json库。在http://www.json.org/找到。
这使得使用JSON对象变得非常容易。
例如,如果你想创建一个新的对象:

JSONObject person = new JSONObject();
person.put("fullName", "Elon Musk");
person.put("phoneNumber", 3811111111);

字符串
JSON对象看起来像这样:

{
"fullName": "Elon Musk",
"phoneNumber": 3811111111
}


它类似于从对象中检索

String name = person.getString("fullName");


您可以使用BufferedReader读取该文件并根据需要解析它。希望我能帮上忙。:)

h9a6wy2h

h9a6wy2h2#

我们就是这么做的。

Map inputMap = ["fullName": "Elon Musk"]
        String finalText = StrSubstitutor.replace("my name is \${fullName}", inputMap)

字符串

lb3vh1jj

lb3vh1jj3#

你可以试试这个:https://github.com/alibaba/fastjson
Fastjson是一个Java库,可用于将Java对象转换为JSON表示。它还可以用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。

cuxqih21

cuxqih214#

您可以使用Java的字符串模板功能。它在JEP 430中进行了描述,并且在JDK 21中作为预览功能出现。下面是一个使用示例:

String name = "Joan";
String info = STR."My name is \{name}";
assert info.equals("My name is Joan");   // true

字符串
Java的字符串模板比其他语言中的功能(如C#的字符串插值和Python的f-strings)更通用,也更安全。例如,下面是一个模板处理器,它返回的不是字符串,而是JSONObject的示例:

var JSON = StringTemplate.Processor.of(
        (StringTemplate st) -> new JSONObject(st.interpolate())
    );

String name    = "Joan Smith";
String phone   = "555-123-4567";
String address = "1 Maple Drive, Anytown";
JSONObject doc = JSON."""
    {
        "name":    "\{name}",
        "phone":   "\{phone}",
        "address": "\{address}"
    };
    """;

相关问题