Java 类名:com.alibaba.alink.pipeline.dataproc.JsonValue
Python 类名:JsonValue

功能介绍

该组件完成json字符串中的信息抽取,按照用户给定的Path 抓取出相应的信息。该组件支持多Path抽取。

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
jsonPath Json 路径数组 用来指定 Json 抽取的内容。 String[]
outputCols 输出结果列列名数组 输出结果列列名数组,必选 String[]
selectedCol 选中的列名 计算列对应的列名 String
outputColTypes 输出结果列列类型数组 输出结果列类型数组 String[] null
reservedCols 算法保留列名 算法保留列 String[] null
skipFailed 是否跳过错误 当遇到抽取值为null 时是否跳过 boolean false
numThreads 组件多线程线程个数 组件多线程线程个数 Integer 1

代码示例

Python 代码

  1. from pyalink.alink import *
  2. import pandas as pd
  3. useLocalEnv(1)
  4. df = pd.DataFrame([
  5. ["{a:boy,b:{b1:1,b2:2}}"],
  6. ["{a:girl,b:{b1:1,b2:2}}"]])
  7. batchData = BatchOperator.fromDataframe(df, schemaStr='str string')
  8. JsonValue()\
  9. .setJsonPath(["$.a","$.b.b1"])\
  10. .setSelectedCol("str")\
  11. .setOutputCols(["f0","f1"])\
  12. .transform(batchData)\
  13. .print()

Java 代码

  1. import org.apache.flink.types.Row;
  2. import com.alibaba.alink.operator.batch.BatchOperator;
  3. import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
  4. import com.alibaba.alink.pipeline.dataproc.JsonValue;
  5. import org.junit.Test;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. public class JsonValueTest {
  9. @Test
  10. public void testJsonValue() throws Exception {
  11. List <Row> df = Arrays.asList(
  12. Row.of("{a:boy,b:{b1:1,b2:2}}")
  13. );
  14. BatchOperator <?> batchData = new MemSourceBatchOp(df, "str string");
  15. new JsonValue()
  16. .setJsonPath("$.a", "$.b.b1")
  17. .setSelectedCol("str")
  18. .setOutputCols("f0", "f1")
  19. .transform(batchData)
  20. .print();
  21. }
  22. }

运行结果

| str | f0 | f1 | | —- | —- | —- |

| {a:boy,b:{b1:1,b2:2}} | boy | 1 |

| {a:girl,b:{b1:1,b2:2}} | girl | 1 |