如何以编程方式编辑JSON-LD'脚本'元素?

时间:2018-01-24 14:33:44

标签: javascript php html json json-ld

我的服务器上有几个包含JSON-LD script元素的HTML文件。我正在寻找一种简单的方法来更新特定元素,而无需实际进入每个文件,更改代码并重新保存它。

具体来说,我想以编程方式遍历每个文件,找到datePosted属性并将其值更新为当前日期,然后将文件保存在我的服务器上。

我非常习惯使用PHP而且我已经使用HTML文件做了类似的事情,但从未尝试过更新JSON-LD。

想知道是否有人知道如何使用JavaScript或PHP执行此操作。如果没有,有人能指出我使用JSON-LD的好解析器的正确方向吗?

示例JSON-LD:

 {
   "@context": "http://schema.org",
   "@type": "JobPosting",
   "datePosted": "2018-01-23"
 }

1 个答案:

答案 0 :(得分:0)

这很简单,只需要使用json_decode和json_encode来使它工作:

public class WhatPrimesTest {
    @Rule
    public PactProviderRuleMk2 provider = new PactProviderRuleMk2("PrimeService", "localhost", 81, this);

    @Pact(provider = "PrimeService", consumer = "PrimeServiceClient")
    public RequestResponsePact createPact(PactDslWithProvider builder) {
        Map<String, String> headers = new HashMap();
        headers.put("Content-Type", "application/json");


        DslPart etaResults = new PactDslJsonBody()
                .stringType("requestedGtin", "4211")
                .integerType("nodeId", 6132)
                .eachLike("gtinList")
                .eachArrayLike("AVAILABLE", 4322)
                .asBody();

        return builder
                .given("There is a prime gtin 4211 from node 6132")
                .uponReceiving("A request for gtinList")
                .path("/primeService/6132?upc=4211")
                .method("GET")
                .willRespondWith()
                .status(200)
                .headers(headers)
                .body(etaResults).toPact();

    }

    @Test
    @PactVerification("PrimeService")
    public void doTest() {
        System.setProperty("pact.rootDir", "../pacts");  // Change output dir for generated pact-files
        String gtinExpected = "00000000012348";
        String gtinList = new WhatPrime(provider.getPort()).checkEta(6132, "4211");
        System.out.println("According to test eta=" + gtinList);
        //assertTrue(gtinList.);
        //assertArrayEquals("00000000012348", gtinExpected);
    }

}