CE-781 Update to work without a table specified (just getting field names from the json keys)

This commit is contained in:
2024-01-08 12:39:43 -06:00
parent a00d4f3cbd
commit 06259041f8
2 changed files with 38 additions and 5 deletions

View File

@ -103,6 +103,15 @@ public class JsonToQRecordAdapter
{
QRecord record = new QRecord();
if(table == null)
{
jsonObject.keys().forEachRemaining(key ->
{
record.setValue(key, jsonObject.optString(key));
});
}
else
{
for(QFieldMetaData field : table.getFields().values())
{
String fieldSource = mapping == null ? field.getName() : String.valueOf(mapping.getFieldSource(field.getName()));
@ -112,6 +121,7 @@ public class JsonToQRecordAdapter
record.setValue(field.getName(), (Serializable) jsonObject.get(fieldSource));
}
}
}
return (record);
}

View File

@ -164,6 +164,29 @@ class JsonToQRecordAdapterTest extends BaseTest
/*******************************************************************************
**
*******************************************************************************/
@Test
public void test_buildRecordsFromJsonWithoutTable_inputList()
{
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
[
{ "firstName":"Tyler", "last":"Samples" },
{ "firstName":"Tim", "lastName":"Chamberlain" }
]
""", null, null);
assertNotNull(qRecords);
assertEquals(2, qRecords.size());
assertEquals("Tyler", qRecords.get(0).getValue("firstName"));
assertEquals("Samples", qRecords.get(0).getValue("last"));
assertEquals("Tim", qRecords.get(1).getValue("firstName"));
assertEquals("Chamberlain", qRecords.get(1).getValue("lastName"));
}
/*******************************************************************************
**
*******************************************************************************/