首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackson2将ObjectNode保存为字符串

Jackson2将ObjectNode保存为字符串
EN

Stack Overflow用户
提问于 2021-10-02 14:20:41
回答 2查看 200关注 0票数 0

下面是字符串json的示例:

代码语言:javascript
复制
{
   "eventName":"PARTY_COLLECTED",
   "payload":{
      "vendor":"IBM",
      "appVersion":"0.0.1",
      "deviceTime":"2021-09-23T04:34:56.086Z",
      "app":"ibm",
      "platform":"windows",
      "data":{
         "album":[
            {
               "hidden":false,
               "mediaType":"Image",
               "locationLongitude":-1.80317833333334,
               "modificationDate":"2015-09-02 20:02:27 +0000",
               "creationDate":"2011-03-13 00:17:25 +0000",
               "pixelHeight":1010,
               "locationLatitude":138.0374445,
               "duration":0,
               "favorite":false,
               "pixelWidth":8588,
               "localIdentifier":"104449A1-4G1A-4AB2-B120-B0AD4A8E5555/L0/001"
            }
         ],
         "contacs":[
            
         ],
         "HistoryDevice":[
            {
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1"
            }
         ]
      }
   }
}

我想问的是,如何使用Java Jackson2库作为字符串获取“数据”中的所有值?

例如,我有变量调用hugeString,所以hugeString的值应该如下所示:

代码语言:javascript
复制
hugeString="{
         "album":[
            {
               "hidden":false,
               "mediaType":"Image",
               "locationLongitude":-1.80317833333334,
               "modificationDate":"2015-09-02 20:02:27 +0000",
               "creationDate":"2011-03-13 00:17:25 +0000",
               "pixelHeight":1010,
               "locationLatitude":138.0374445,
               "duration":0,
               "favorite":false,
               "pixelWidth":8588,
               "localIdentifier":"104449A1-4G1A-4AB2-B120-B0AD4A8E5555/L0/001"
            }
         ],
         "contacs":[

         ],
         "HistoryDevice":[
            {
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1",
               "another_data1":"data1"
            }
         ]
      }"

我已经尝试使用以下代码:

代码语言:javascript
复制
object StreamData {
  case class StreamDatas_rows(
                          data:String
                        )
  def jsonToRow(json_object:ObjectNode):StreamDatas_rows={
    def getStringOrNull(jsonNode:JsonNode):String=if(jsonNode==null||jsonNode.isNull) "" else jsonNode.asText()
    StreamDatas_rows(
       json_object.path("payload").get("data").asText()
    )
  }
}

然后打电话给我的主要工作:

代码语言:javascript
复制
val ss = ds.map(s=>s)
ss.print()

但是没有运气,总是得到一个空变量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-02 14:57:23

下面的代码是Java的实现。

代码语言:javascript
复制
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.LinkedHashMap;

public class SO_Jackson {

    private static void parseJson(String jsonData) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(jsonData);
        JsonNode node = jsonNode.at("/payload/data");
        String subData = objectMapper.writeValueAsString(node);
        System.out.println(subData);
    }
    public static void main(String[] args) throws JsonProcessingException {
        String jsonData = "{\"eventName\":\"PARTY_COLLECTED\",\"payload\":{\"vendor\":\"IBM\",\"appVersion\":\"0.0.1\",\"deviceTime\":\"2021-09-23T04:34:56.086Z\",\"app\":\"ibm\",\"platform\":\"windows\",\"data\":{\"album\":[{\"hidden\":false,\"mediaType\":\"Image\",\"locationLongitude\":-1.80317833333334,\"modificationDate\":\"2015-09-02 20:02:27 +0000\",\"creationDate\":\"2011-03-13 00:17:25 +0000\",\"pixelHeight\":1010,\"locationLatitude\":138.0374445,\"duration\":0,\"favorite\":false,\"pixelWidth\":8588,\"localIdentifier\":\"104449A1-4G1A-4AB2-B120-B0AD4A8E5555/L0/001\"}],\"contacs\":[],\"HistoryDevice\":[{\"another_data1\":\"data1\",\"another_data1\":\"data1\",\"another_data1\":\"data1\",\"another_data1\":\"data1\",\"another_data1\":\"data1\"}]}}}";
        parseJson(jsonData);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-10-02 14:37:02

一种选择是使用org.json.JSONObject并执行如下操作:

代码语言:javascript
复制
JSONObject jsonResult = new JSONObject(dataString);
String hugeString = jsonResult.getJSONObject("payload").getString("data");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69417748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档