当前位置: 首页 > 知识库问答 >
问题:

如何将解析的JSON消息的内容存储到基于关键字的字符串变量中?

公孙高畅
2023-03-14

我需要帮助将解析的JSON消息中的文本存储到基于关键字的变量中。我的意思是,我有一个json消息,我已经解析过一次,在该消息中,它返回如下内容:

Name: Kobe Bryant<br/>
Company: Lakers<br/>
Email: kobe@lakers.com<br/>
etc.

我希望能够查看这个测试块,看到它说“name:Kobe Bryant”,并将Kobe Bryant存储到一个名为“name”的字符串变量中,等等。我该怎么处理?

public class ParseTest {
    public static void main(String[] args) throws Exception {

        String name;
        String company;
        String email;
        String phoneNumber;
        String projectType;
        String contactBy;
        String timeFrame;
        String message;

        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

        MainParser mp = mapper.readValue(new File("/Users/kane/VersionControl/LambdaTest/src/InfoBox.txt"), MainParser.class);

        if ("blah".equals(mp.getTopicArn())) {
            //Send to proposal table
            System.out.println(mp.getSubject());
            System.out.println(mp.getMessage());
        } else if ("blah blah".equals(mp.getTopicArn())) {
            //Send to infoBox table
            System.out.println(mp.getMessage());
        }
    }
}
{
 "Subject" : "Proposal Request (sent Wed May 22 2019 14:47:49 GMT-0400 (Eastern Daylight Time))",
 "Message" : "Name: Kobe Bryant\nCompany: Lakers\nEmail: kobe@lakers.com"
}
private String Subject;
private String Message;

public String getSubject() {
    return Subject;
}

public void setSubject(String subject) {
    Subject = subject;
}

public String getMessage() {
    return Message;
}

public void setMessage(String message) {
    Message = message;
}

共有1个答案

赵渊
2023-03-14

您有一个JSON负载,其中一个值包含按新行\n拆分的key:value对中的数据。我们需要创建两个POJO类:Message用于根JSONperson-内部人员数据。这两个类可能如下所示:

class Message {

    private String subject;
    private String message;

    // getters, setters, toString
}

class Person {

    private String name;
    private String company;
    private String email;

    // ... more properties

    // getters, setters, toString
}

我们可以解析您的JSON负载,如下所示:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;

import java.io.File;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        ObjectMapper mapper = new ObjectMapper();
        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);

        Message message = mapper.readValue(jsonFile, Message.class);
        String[] lines = message.getMessage().split("\n");

        Map<String, String> properties = Stream.of(lines)
                .map(i -> i.split(":"))
                .filter(i -> i.length == 2)
                .collect(Collectors.toMap(i -> i[0].trim(), i -> i[1].trim()));

        Person person = mapper.convertValue(properties, Person.class);
        System.out.println(person);
    }
}

上面的示例打印了JSON负载:

Person{name='Kobe Bryant', company='Lakers', email='kobe@lakers.com'}
  1. Java 8-将列表转换为映射
  2. 如何将映射反序列化为POJO?
  3. 如何使用Jackson序列化为java.util.list和java.util.map
 类似资料:
  • 问题内容: 是否有快速功能将通过接收到的JSON对象转换为字符串变量转储(用于跟踪/调试)? 问题答案: 是的,可以在此处找到,它包含在Firefox 3.5.4及更高版本中。 JSON字符串反方向,将JavaScript数据结构转换为JSON文本。 JSON不支持循环数据结构,因此请注意不要将循环结构提供给JSON字符串化器。 https://web.archive.org/web/201006

  • 问题内容: 我正在入侵用于捕获SMTP电子邮件并处理邮件数据的Node程序。该库将邮件数据作为流提供,但我不知道如何将其转换为字符串。 我目前正在使用将其写入stdout ,但是正如我所说,我需要将流数据替换为字符串,一旦流结束,就可以使用它。 如何将所有数据从Node.js流收集到字符串中? 问题答案: 关键是使用Readable Stream 的和事件。听这些事件: 收到事件后,将新的数据块添

  • 问题内容: 我正在尝试解析JSON中的字符串,但不确定如何执行此操作。这是我尝试解析为PHP数组的字符串的示例。 是否有一些库可以接受id,名称和电子邮件并将其放入数组中? 问题答案: 可以使用完成,请确保将第二个参数设置为,因为您需要数组而不是对象。 输出:

  • 解析大型JSON字符串时出现内存溢出错误。 我见过几个使用GSON来流式处理大型JSON文档的例子,但我的问题是,我的JSON文档没有数百或数千行可以有效地标记化的“行”。它只包含一个base64节点,数据量约为15MB,例如。 如何将JSON文档中的单个base64字符串解析为文件并保存到文件系统,而不耗尽内存?使用StringBuilder将base64节点解析为字符串是导致当前OOM错误的原

  • 问题内容: 如何获取并将其存储到变量中?我想在程序中使用稍后生成的字符串。 我对Java还是很陌生,所以我不太熟悉我认为它将是解决方案。或者,如果您有其他任何想法,请告诉我。谢谢 问题答案: 遵循以下原则 应该是您所需要的。 相关文件: StringWriter 打印作家 可投掷

  • 因此,当我发出get()时,我得到的是一个dict,dict的“Body”成员是“StreamingBody”类型,并且根据如何使用bot3将S3对象保存到文件,我看到了如何从这个流中分块读取,但我想知道是否有更简单的方法,la boto。