在dataflow 2.x中将TableRow转换为JSON格式的String的最简单方法?

时间:2018-01-02 22:20:45

标签: java json dataflow beam

如果没有编写自己的函数,那么在数据流2.x管道中将TableRow对象转换为JSON格式的字符串的最简单方法是什么?

我认为下面的代码可行,但它不能在键/值之间正确插入引号,尤其是在有嵌套字段的情况下。

public static class TableRowToString extends DoFn<TableRow, String> {    
  private static final long serialVersionUID = 1L;

  @ProcessElement
    public void processElement(ProcessContext c) {
      c.output(c.element().toString());
    }
  }
}

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,我使用org.apache.beam.sdk.extensions.jackson.AsJsons解决了。

要使用它,不必创建新的变换,可以将其直接应用到管道中。

Option Explicit
Public Sub SelectDropdown()
    Dim driver As New ChromeDriver
    With driver
        .get "https://www.amazon.com/dp/B071V5DQ56/"
        .FindElementByCss("#nav-packard-glow-loc-icon", timeout:=5000).Click
        .FindElementByCss("#GLUXCountryListDropdown", timeout:=5000).Click
        .FindElementById("GLUXCountryList", timeout:=5000).AsSelect.SelectByText "Canada"
        Application.Wait Now + TimeSerial(0, 0, 1)
        .FindElementByCss("[data-action='a-popover-close']", timeout:=5000).Click
    End With
End Sub

如果您正在使用Maven管理项目,则可以将其添加到import org.apache.beam.sdk.extensions.jackson.AsJsons; Pipeline p = Pipeline.create(options); p.apply("The transform that returns a PCollection of TableRow") .apply("JSon Transform", AsJsons.of(TableRow.class)); 文件中的<dependencies>

pom.xml