更新嵌套JsonNode中的值

时间:2019-12-30 09:38:03

标签: java json

我正在尝试将嵌套JsonObject中的print (df1) Year Month ID Fruit 0 2018 1 A Apple 1 2018 1 A Banana 6 2018 3 B Apple 7 2018 3 B Mango 变量更新为当前日期,JSON的结构如下:

expiryDate

我已经成功读取了JSON,但是只能将新属性放在顶层,而不是更新{ "expiryDate" : { "type" : "String", "value" : "31-12-2019" } } 属性:

expiryDate.value

如何更新嵌套属性?

3 个答案:

答案 0 :(得分:3)

您可以使用:

JsonNode data = new ObjectMapper().readTree(dataString);
((ObjectNode) data.get("expiryDate")).put("value", "05-02-2020");

位置:

  • ((ObjectNode) data.get("expiryDate")),您得到父母,然后
  • put("value", "05-02-2020")更改嵌套节点的值

输出

{"expiryDate":{"type":"String","value":"05-02-2020"}}

答案 1 :(得分:0)

function useDocScroll() {
  const [docScroll, setDocScroll] = useState(getScroll());
  const lastScrollRef = useRef(null);
  const [scrollSpeed, setScrollSpeed] = useState();

  useEffect(() => {
    if (!isClient) {
      return false;
    }

    function handleScroll() {
      const lastScroll = lastScrollRef.current;
      const curr = getScroll();
      setScrollSpeed(Math.abs(getScroll() - (lastScroll || 0)));
      setDocScroll(curr);

      // Update last
      lastScrollRef.current = curr;
    }

    window.addEventListener('scroll', handleScroll);
  }, []);

  return [docScroll, lastScrollRef.current, scrollSpeed];
}

在到期日内有该方法。

答案 2 :(得分:0)

您可以使用ObjectNode .put并更新下面的已测试代码中的现有值

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class Test {

    public static void main(String[] args) throws  Exception {
        String datString = "{ \"expiryDate\" : { \"type\" : \"String\", \"value\" : \"31-12-2019\" } } ";
        JsonNode data = new ObjectMapper().readTree(datString);
        System.out.println(" before update json"+data);
        String expiryDate = data.get("expiryDate").get("value").textValue();
        ((ObjectNode) data.get("expiryDate")).put("value", "05-02-2020");
        System.out.println(" updated json "+data);
    } }