com.fasterxml.jackson.databind.JsonNode类的使用及代码示例

x33g5p2x  于2022-01-21 转载在 其他  
字(12.3k)|赞(0)|评价(0)|浏览(860)

本文整理了Java中com.fasterxml.jackson.databind.JsonNode类的一些代码示例,展示了JsonNode类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。JsonNode类的具体详情如下:
包路径:com.fasterxml.jackson.databind.JsonNode
类名称:JsonNode

JsonNode介绍

[英]Base class for all JSON nodes, which form the basis of JSON Tree Model that Jackson implements. One way to think of these nodes is to consider them similar to DOM nodes in XML DOM trees.

As a general design rule, most accessors ("getters") are included in this base class, to allow for traversing structure without type casts. Most mutators, however, need to be accessed through specific sub-classes (such as ObjectNode and ArrayNode). This seems sensible because proper type information is generally available when building or modifying trees, but less often when reading a tree (newly built from parsed JSON content).

Actual concrete sub-classes can be found from package com.fasterxml.jackson.databind.node.

Note that it is possible to "read" from nodes, using method TreeNode#traverse(ObjectCodec), which will result in a JsonParser being constructed. This can be used for (relatively) efficient conversations between different representations; and it is what core databind uses for methods like ObjectMapper#treeToValue(TreeNode,Class)and ObjectMapper#treeAsTokens(TreeNode)
[中]所有JSON节点的基类,构成Jackson实现的JSON树模型的基础。考虑这些节点的一种方法是考虑它们与XML DOM树中的DOM节点类似。
作为一般设计规则,大多数访问器(“getter”)都包含在这个基类中,以允许在没有类型转换的情况下遍历结构。然而,大多数变异子需要通过特定的子类(例如ObjectNodeArrayNode来访问。这似乎是合理的,因为在构建或修改树时,通常可以使用适当的类型信息,但在读取树(从解析的JSON内容新构建)时,这种情况不太常见。
可以从包com中找到实际的具体子类。fasterxml。杰克逊。数据绑定。节点。
请注意,可以使用方法TreeNode#traverse(ObjectCodec)从节点“读取”,这将导致构造JsonParser。这可以用于不同表示之间的(相对)高效对话;这也是核心数据绑定用于ObjectMapper#treeToValue(TreeNode,Class)和ObjectMapper#TreeStokens(TreeNode)等方法的功能

代码示例

代码示例来源:origin: knowm/XChange

@Override
 public CoinbaseCurrency deserialize(JsonParser jp, DeserializationContext ctxt)
   throws IOException, JsonProcessingException {
  ObjectCodec oc = jp.getCodec();
  JsonNode node = oc.readTree(jp);
  String name = node.get("name").asText();
  String id = node.get("id").asText();
  return new CoinbaseCurrency(name, id);
 }
}

代码示例来源:origin: joelittlejohn/jsonschema2pojo

private String getTypeName(JsonNode node) {
  if (node.has("type") && node.get("type").isArray() && node.get("type").size() > 0) {
    for (JsonNode jsonNode : node.get("type")) {
      String typeName = jsonNode.asText();
      if (!typeName.equals("null")) {
        return typeName;
      }
    }
  }
  if (node.has("type") && node.get("type").isTextual()) {
    return node.get("type").asText();
  }
  return DEFAULT_TYPE_NAME;
}

代码示例来源:origin: stackoverflow.com

String x = "{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
JsonNode df = mapper.readValue(x, JsonNode.class);
System.out.println(df.toString());
// output: {"candidateId":"k","candEducationId":1,"activitiesSocieties":"Activities for cand1"}

代码示例来源:origin: apache/incubator-druid

private boolean isFlatList(JsonNode list)
 {
  for (JsonNode obj : list) {
   if (obj.isObject() || obj.isArray()) {
    return false;
   }
  }
  return true;
 }
}

代码示例来源:origin: swagger-api/swagger-core

private String getFieldText(String fieldName, JsonNode node) {
    JsonNode inNode = node.get(fieldName);
    if (inNode != null) {
      return inNode.asText();
    }
    return null;
  }
}

代码示例来源:origin: apache/kafka

private static Object convert(JsonNode value) {
  if (value.isArray()) {
    List<String> retvalList = new ArrayList<>();
    for (JsonNode arrayElement : value)
      retvalList.add(arrayElement.asText());
    return retvalList;
  }
  return value.getNodeType() == JsonNodeType.NUMBER ? value.numberValue() : value.asText();
}

代码示例来源:origin: Netflix/eureka

private void doInstanceInfoCompactEncodeDecode(AbstractEurekaJacksonCodec codec, boolean isJson) throws Exception {
  InstanceInfo instanceInfo = infoIterator.next();
  String encodedString = codec.getObjectMapper(InstanceInfo.class).writeValueAsString(instanceInfo);
  if (isJson) {
    JsonNode metadataNode = new ObjectMapper().readTree(encodedString).get("instance").get("metadata");
    assertThat(metadataNode, is(nullValue()));
  }
  InstanceInfo decodedValue = codec.getObjectMapper(InstanceInfo.class).readValue(encodedString, InstanceInfo.class);
  assertThat(decodedValue.getId(), is(equalTo(instanceInfo.getId())));
  assertThat(decodedValue.getMetadata().isEmpty(), is(true));
}

代码示例来源:origin: knowm/XChange

throws IOException, JsonProcessingException {
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
if (node.isObject()) {
 String id = node.get("id").asText();
 String name = node.get("name").asText();
 String symbol = node.get("symbol").asText();
 String websiteSlug = node.get("website_slug").asText();
 Date lastUpdated = new Date(node.get("last_updated").asLong() * 1000);
 BigDecimal rank = new BigDecimal(node.get("rank").asInt());
 BigDecimal circulatingSupply = new BigDecimal(node.get("circulating_supply").asDouble());
 BigDecimal totalSupply = new BigDecimal(node.get("total_supply").asDouble());
 BigDecimal maxSupply = new BigDecimal(node.get("max_supply").asDouble());
 ObjectMapper mapper = new ObjectMapper();
 SimpleModule module = new SimpleModule();
 module.addDeserializer(
   CoinMarketCapQuote.class, new CoinMarketCapQuote.CoinMarketCapQuoteDeserializer());
 mapper.registerModule(module);
 Iterator<Map.Entry<String, JsonNode>> it = node.get("quotes").fields();
 while (it.hasNext()) {
  Map.Entry<String, JsonNode> pair = it.next();
  quotes.put(pair.getKey(), mapper.treeToValue(pair.getValue(), CoinMarketCapQuote.class));

代码示例来源:origin: knowm/XChange

@Override
 public CoinMarketCapArrayData<CoinMarketCapTicker> deserialize(
   JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
  ObjectCodec oc = jp.getCodec();
  JsonNode node = oc.readTree(jp);
  if (node.isObject()) {
   List<CoinMarketCapTicker> tickers = new LinkedList<>();
   ObjectMapper mapper = new ObjectMapper();
   SimpleModule module = new SimpleModule();
   module.addDeserializer(
     CoinMarketCapTicker.class, new CoinMarketCapTicker.CoinMarketCapTickerDeserializer());
   mapper.registerModule(module);
   for (JsonNode child : node.get("data")) {
    tickers.add(mapper.treeToValue(child, CoinMarketCapTicker.class));
   }
   return new CoinMarketCapArrayData<>(tickers);
  }
  return null;
 }
}

代码示例来源:origin: linlinjava/litemall

public static Integer parseInteger(String body, String field) {
  ObjectMapper mapper = new ObjectMapper();
  JsonNode node = null;
  try {
    node = mapper.readTree(body);
    JsonNode leaf = node.get(field);
    if (leaf != null)
      return leaf.asInt();
  } catch (IOException e) {
    e.printStackTrace();
  }
  return null;
}

代码示例来源:origin: apache/pulsar

@Override
  public LoadManagerReport deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
      throws IOException, JsonProcessingException {
    ObjectMapper mapper = ObjectMapperFactory.getThreadLocal();
    ObjectNode root = ObjectMapperFactory.getThreadLocal().readTree(jsonParser);
    if ((root.has("loadReportType") && root.get("loadReportType").asText().equals(LoadReport.loadReportType))
        || (root.has("underLoaded"))) {
      return mapper.readValue(root.toString(), LoadReport.class);
    } else {
      return mapper.readValue(root.toString(), LocalBrokerData.class);
    }
  }
}

代码示例来源:origin: prestodb/presto

@Test
public void testHeartbeatStatsSerialization()
    throws Exception
{
  ObjectMapper objectMapper = new ObjectMapperProvider().get();
  Stats stats = new Stats(new URI("http://example.com"));
  String serialized = objectMapper.writeValueAsString(stats);
  JsonNode deserialized = objectMapper.readTree(serialized);
  assertFalse(deserialized.has("lastFailureInfo"));
  stats.recordFailure(new SocketTimeoutException("timeout"));
  serialized = objectMapper.writeValueAsString(stats);
  deserialized = objectMapper.readTree(serialized);
  assertFalse(deserialized.get("lastFailureInfo").isNull());
  assertEquals(deserialized.get("lastFailureInfo").get("type").asText(), SocketTimeoutException.class.getName());
}

代码示例来源:origin: twosigma/beakerx

@Test
public void serializeColorsBars_resultJsonHasColors() throws IOException {
 //when
 bars.setColor(Arrays.asList(Color.BLUE, Color.GREEN, Color.BLACK));
 barsSerializer.serialize(bars, jgen, new DefaultSerializerProvider.Impl());
 jgen.flush();
 //then
 JsonNode actualObj = mapper.readTree(sw.toString());
 Assertions.assertThat(actualObj.has("colors")).isTrue();
 ArrayNode arrayNode = (ArrayNode) actualObj.get("colors");
 Assertions.assertThat(arrayNode.get(1).get("rgb").asInt()).isEqualTo(Color.GREEN.getRGB());
}

代码示例来源:origin: twosigma/beakerx

@SuppressWarnings("unchecked")
public static List<String> getColumns(JsonNode n, ObjectMapper mapper) throws IOException {
 List<String> columns = null;
 if (n.has("columnNames"))
  columns = mapper.readValue(n.get("columnNames").toString(), List.class);
 return columns;
}

代码示例来源:origin: knowm/XChange

@Override
 public YoBitTrades deserialize(JsonParser p, DeserializationContext ctxt)
   throws IOException, JsonProcessingException {
  Map<String, List<YoBitTrade>> trades = new HashMap<>();
  ObjectCodec oc = p.getCodec();
  JsonNode node = oc.readTree(p);
  if (node.isObject()) {
   Iterator<Entry<String, JsonNode>> priceEntryIter = node.fields();
   while (priceEntryIter.hasNext()) {
    Entry<String, JsonNode> priceEntryNode = priceEntryIter.next();
    JsonNode priceNode = priceEntryNode.getValue();
    String ccyPair = priceEntryNode.getKey();
    List<YoBitTrade> res = new ArrayList<>();
    trades.put(ccyPair, res);
    if (priceNode.isArray()) {
     for (JsonNode jsonNode : priceNode) {
      ObjectMapper jsonObjectMapper = new ObjectMapper();
      res.add(jsonObjectMapper.convertValue(jsonNode, YoBitTrade.class));
     }
    }
   }
  }
  return new YoBitTrades(trades);
 }
}

代码示例来源:origin: prestodb/presto

@Override
  public ClientTypeSignatureParameter deserialize(JsonParser jp, DeserializationContext ctxt)
      throws IOException
  {
    JsonNode node = jp.getCodec().readTree(jp);
    ParameterKind kind = MAPPER.readValue(MAPPER.treeAsTokens(node.get("kind")), ParameterKind.class);
    JsonParser jsonValue = MAPPER.treeAsTokens(node.get("value"));
    Object value;
    switch (kind) {
      case TYPE:
        value = MAPPER.readValue(jsonValue, ClientTypeSignature.class);
        break;
      case NAMED_TYPE:
        value = MAPPER.readValue(jsonValue, NamedTypeSignature.class);
        break;
      case LONG:
        value = MAPPER.readValue(jsonValue, Long.class);
        break;
      default:
        throw new UnsupportedOperationException(format("Unsupported kind [%s]", kind));
    }
    return new ClientTypeSignatureParameter(kind, value);
  }
}

代码示例来源:origin: twosigma/beakerx

@Override
 public NamespaceBinding deserialize(JsonParser jp, DeserializationContext ctxt) 
   throws IOException, JsonProcessingException {
  ObjectMapper mapper = (ObjectMapper)jp.getCodec();
  JsonNode node = mapper.readTree(jp);
  String name = node.get("name").asText();
  String session = node.get("session").asText();
  Boolean defined = node.get("defined").asBoolean();
  JsonNode o = node.get("value");

  Object obj = objectSerializerProvider.get().deserialize(o, mapper);
  return new NamespaceBinding(name,session,obj,defined);
 }
}

代码示例来源:origin: knowm/XChange

@Override
 public YoBitTickersReturn deserialize(JsonParser p, DeserializationContext ctxt)
   throws IOException {

  JsonNode node = p.readValueAsTree();
  Map<String, YoBitTicker> tickers = new HashMap<>();

  if (node.isObject()) {
   Iterator<Map.Entry<String, JsonNode>> priceEntryIter = node.fields();

   while (priceEntryIter.hasNext()) {
    Map.Entry<String, JsonNode> priceEntryNode = priceEntryIter.next();

    JsonNode jsonNode = priceEntryNode.getValue();
    ObjectReader jsonObjectReader = new ObjectMapper().readerFor(YoBitTicker.class);
    YoBitTicker ticker = jsonObjectReader.readValue(jsonNode);
    String ccy = priceEntryNode.getKey();

    tickers.put(ccy, ticker);
   }
  }

  return new YoBitTickersReturn(tickers);
 }
}

代码示例来源:origin: stagemonitor/stagemonitor

private JsonNode merge(JsonNode source, JsonNode replacement) throws IOException {
  JsonNode replacementNodeEncoded = replacement.get(fieldName);
  if (replacementNodeEncoded != null) {
    ObjectNode decodedSource = tryDecode(source.get(fieldName), mapper.createObjectNode(), fieldName);
    decodedSource.setAll(tryDecode(replacement.get(fieldName), mapper.createObjectNode(), fieldName));
    return TextNode.valueOf(mapper.writeValueAsString(decodedSource));
  } else {
    return source.get(fieldName);
  }
}

代码示例来源:origin: stackoverflow.com

final String json = "{\"objects\" : [\"One\", \"Two\", \"Three\"]}";

final JsonNode arrNode = new ObjectMapper().readTree(json).get("objects");
if (arrNode.isArray()) {
  for (final JsonNode objNode : arrNode) {
    System.out.println(objNode);
  }
}

相关文章