pentaho/pentaho-kettle · error · KettleException
JsonInput.Log.NoField
JsonInput.Log.NoField
Error message
JsonInput.Log.NoField
What it means
JsonInput's prepareToRowProcessing throws KettleException with key JsonInput.Log.NoField when the 'Field value' (the JSON source field to parse) is empty. The step logs the same message and aborts before processing rows.
Solutions
- Open the JSON Input step and set the 'Field value' to the incoming field that contains the JSON text.
- Run 'Get Fields' on the step to pick a valid source field from the previous step.
- If settings were lost during migration, re-enter the step configuration and re-save the transformation.
Example fix
// before: no source field configured meta.setFieldValue( null ); // after: point at the field holding the JSON payload meta.setFieldValue( "json_payload" );
Defensive patterns
Strategy: validation
Validate before calling
if (meta.getFieldValue() == null || meta.getFieldValue().trim().isEmpty()) {
throw new IllegalArgumentException("JSON Input requires a source 'Field value' pointing at the field containing the JSON text");
} Try / catch
try { trans.execute(...); } catch (KettleException e) { if (e.getMessage().contains("NoField")) { /* open step and set the Field value */ } } Prevention
- Always fill the 'Field value' setting when creating the step.
- Use 'Get Fields' to select an existing upstream field.
- Re-verify step settings after environment migrations.
When it happens
Trigger: processRow -> prepareToRowProcessing finds Utils.isEmpty(meta.getFieldValue()), i.e. no source field was selected in the step settings.
Common situations: Freshly added step where 'Field value' was never filled; transformation migrated from another environment losing settings; user cleared the field while editing.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- AccessInput.Exception.CouldnotFindField
- AccessInput.Log.NoField
- AddSequence.Exception.NoSpecifiedMethod
- At this time we don't support the use of multiple cluster…
- AutoDoc.Exception.FilenameFieldNotFound
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7a9a7466e5102a36.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/json/core/src/main/java/org/pentaho/di/trans/steps/jsoninput/JsonInput.java:167
if ( !meta.isDoNotFailIfNoFile() && data.files.nrOfFiles() == 0 ) {
String errMsg = BaseMessages.getString( PKG, "JsonInput.Log.NoFiles" );
logError( errMsg );
inputError( errMsg );
}
} else {
data.readrow = getRow();
data.inputRowMeta = getInputRowMeta();
if ( data.inputRowMeta == null ) {
data.hasFirstRow = false;
return;
}
data.hasFirstRow = true;
data.outputRowMeta = data.inputRowMeta.clone();
// Check if source field is provided
if ( Utils.isEmpty( meta.getFieldValue() ) ) {
logError( BaseMessages.getString( PKG, "JsonInput.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "JsonInput.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexSourceField < 0 ) {
data.indexSourceField = getInputRowMeta().indexOfValue( meta.getFieldValue() );
if ( data.indexSourceField < 0 ) {
logError( BaseMessages.getString( PKG, "JsonInput.Log.ErrorFindingField", meta.getFieldValue() ) );
throw new KettleException( BaseMessages.getString( PKG, "JsonInput.Exception.CouldnotFindField",
meta.getFieldValue() ) );
}
}
// if RemoveSourceField option is set, we remove the source field from the output meta
if ( meta.isRemoveSourceField() ) {
data.outputRowMeta.removeValueMeta( data.indexSourceField );
// Get total previous fields minus one since we remove source field
data.totalpreviousfields = data.inputRowMeta.size() - 1;
} else {View on GitHub (pinned to f3058517a1)