diff --git a/packages/nc-gui/components/smartsheet/grid/canvas/cells/Plain.ts b/packages/nc-gui/components/smartsheet/grid/canvas/cells/Plain.ts index 537a23b1f7..454191c2a5 100644 --- a/packages/nc-gui/components/smartsheet/grid/canvas/cells/Plain.ts +++ b/packages/nc-gui/components/smartsheet/grid/canvas/cells/Plain.ts @@ -18,6 +18,7 @@ export const PlainCellRenderer: CellRenderer = { isMysql, isXcdbBase, t, + isUnderLookup, } = props if (!meta || !metas) return @@ -33,6 +34,7 @@ export const PlainCellRenderer: CellRenderer = { isMssql, isXcdbBase, t, + isUnderLookup, }) if (props.tag?.renderAsTag) { diff --git a/packages/nc-gui/lib/types.ts b/packages/nc-gui/lib/types.ts index 4bea1c9a0d..2d0aaafbdf 100644 --- a/packages/nc-gui/lib/types.ts +++ b/packages/nc-gui/lib/types.ts @@ -543,6 +543,7 @@ interface ParsePlainCellValueProps { isMssql: (sourceId?: string) => boolean isXcdbBase: (sourceId?: string) => boolean t: Composer['t'] + isUnderLookup?: boolean } } diff --git a/packages/nc-gui/utils/dataUtils.ts b/packages/nc-gui/utils/dataUtils.ts index f9f0c6ed02..66095039cd 100644 --- a/packages/nc-gui/utils/dataUtils.ts +++ b/packages/nc-gui/utils/dataUtils.ts @@ -715,7 +715,7 @@ export const parsePlainCellValue = ( value: ParsePlainCellValueProps['value'], params: ParsePlainCellValueProps['params'], ): string => { - const { col, abstractType } = params + const { col, abstractType, isUnderLookup } = params if (!col) { return '' @@ -765,7 +765,11 @@ export const parsePlainCellValue = ( } if (isJSON(col)) { try { - return JSON.stringify(JSON.parse(value), null, 2) + if (isUnderLookup) { + return typeof value === 'string' ? value : JSON.stringify(value) + } else { + return JSON.stringify(JSON.parse(value), null, 2) + } } catch { return value }