GE Lua Documentation

Press F to search!

jsonWriteFile

Definition


-- @/lua/common/utils.lua:460

-- if "atomicWrite" is truthy, the function will write to a temp file first before renaming it to "filename"
-- if "atomicWrite" is a string, that string will be used as a temp filename, otherwise the function will use a default temp filename
function jsonWriteFile(filename, obj, pretty, numberPrecision, atomicWrite)
  if not atomicWrite then
    return jsonWriteFileActual(filename, obj, pretty, numberPrecision)
  else
    local tempFileName = (type(atomicWrite) == "string") and atomicWrite or (filename .. ".tmp")
    if jsonWriteFileActual(tempFileName, obj, pretty, numberPrecision) then
      if FS:renameFile(tempFileName, filename) == 0 then
        return true
      else
        log("E", "save", "failed to copy temporary json!")
      end
    else
      log("E", "save", "failed to write json!")
    end
    return false
  end
end

Callers

@/lua/ge/extensions/flowgraph/modules/aiRecordingModule.lua
  }
  jsonWriteFile(dir..fn, testData, true)
end
@/lua/ge/extensions/core/modmanager.lua
  if not isSafeMode() then
    jsonWriteFile(persistencyfile, { header = dbHeader, mods = mods}, true)
  end
@/lua/ge/extensions/core/paths.lua

  jsonWriteFile(filename, pathCopy, true)
  cameraPath.filename = filename
@/lua/vehicle/beamstate.lua
  end
  jsonWriteFile(filename, save, true)
end
@/lua/ge/extensions/editor/rallyEditor/measurementsTab.lua
  local data = self:serialize()
  jsonWriteFile(filePath, data, true)
  log('D', logTag, 'Auto-saved measurements to: ' .. filePath)
@/lua/vehicle/extensions/vehicleStatsLogger.lua

  if not jsonWriteFile(fpath, s, true, 0) then
    log("E", logTag, "failed writing settings to file")
@/lua/ge/extensions/util/trackBuilder/segmentToProceduralMesh.lua
  segment.submeshCount = nil
 -- jsonWriteFile("trackMesh",segment.meshes, true)
  --jsonWriteFile("trackMeshSmall",segment.meshes, false)
 -- jsonWriteFile("trackMesh",segment.meshes, true)
  --jsonWriteFile("trackMeshSmall",segment.meshes, false)
@/lua/ge/extensions/editor/gen/world.lua
		local fname = pth or fsave..'_'..asave[1][1]..'.json'
		jsonWriteFile(fname, desc)
		lo('<< toJSON:'..fname)
			end
			jsonWriteFile(ok..'managedItemData.json', cnt)
		end
			lo('?? for_JSON:'..#asave..':'..fsave) --..tostring(adesc[cedit.mesh]))
		jsonWriteFile(fsave..'_'..asave[1][1]..'.json', desc)
		csave = 1
@/lua/ge/extensions/gameplay/rally/notebook/path.lua
  local json = self:onSerialize()
  local saveOk = jsonWriteFile(fname, json, true)
  if not saveOk then
@/lua/ge/extensions/editor/tech/roadArchitect/groups.lua
      local encodedData = { data = { group = serialiseGroup(groups[idx]) }}
      jsonWriteFile(data.filepath, encodedData, true)
    end,
@/lua/ge/extensions/editor/vehicleEditor/staticEditor/veStaticRenderView.lua

  jsonWriteFile(settingsPath, viewsSerialized, true)
end
@/lua/ge/extensions/editor/biomeTool.lua
  if layerAvailable then
    jsonWriteFile(biomeDataPath, var.layers, true)
  end
@/lua/ge/extensions/editor/api/dynamicDecals.lua
  }
  jsonWriteFile(modDirectory .. vehicleName .. "_" .. skinName .. "_skin.jbeam", jbeamData, true)
  data.materialIdx = nil
  jsonWriteFile(path_string, data, true)
end
@/lua/ge/extensions/gameplay/rally/settingsManager.lua
--     end
--     jsonWriteFile(settingsFname, missionSettings:onSerialize(), true)
--   end
@/lua/ge/extensions/editor/roadArchitect.lua
    }
  jsonWriteFile(filepath, encodedData, true)
    }
  jsonWriteFile(tempFilepath, encodedData, true)
  return { d = { name = 'roadArchitectSerializationData'} }
@/lua/ge/extensions/util/jbeamStats.lua

-- jsonWriteFile('jbeam_stats.json', extensions.util_jbeamStats.getStats(), true)
@/lua/ge/extensions/ui/console.lua
 }
 jsonWriteFile(settingsPath, s, true)

          jsonWriteFile(historyPath, history, true)
@/lua/ge/extensions/gameplay/rally/recceSettings.lua
  local json = self:onSerialize()
  jsonWriteFile(self.fname, json, true)
end
@/lua/ge/extensions/gameplay/rally/notebook/missionSettings.lua
  local json = self:onSerialize()
  jsonWriteFile(self:fname(), json, true)
end
@/lua/ge/main.lua
  -- log('D', 'main', 'persistent data exported: ' .. dumps(d))
  -- jsonWriteFile('persistentData.json', d, true)
  be.persistenceLuaData = serialize(d)
@/lua/ge/extensions/editor/api/preferencesRegistry.lua
  end
  jsonWriteFile(filename, prefsToSave or {}, true)
end

  jsonWriteFile(fname, prefsToSave or {}, true)
  self.dirty = false
@/lua/ge/extensions/gameplay/rally/tools/devTools.lua

  local success = jsonWriteFile(filename, exportData, true)
  if success then
@/lua/common/jbeam/variables.lua
    if debugParts then
      jsonWriteFile(slotId .. '.json', {partPost=part, partPre=partOrig, slotvars=svars, slotOptions=slotOptions}, true)
    end
@/lua/ge/extensions/editor/scriptAIManager.lua
  end
  jsonWriteFile(trackFilePath .. filename .. trackFileExt, data, true)
end
    if (not tableIsEmpty(recordings)) and im.SmallButton("save") then
      jsonWriteFile(persistenceFilename, M.onSerialize())
    end
@/lua/ge/extensions/gameplay/speedTrapLeaderboards.lua
      log("D", logTag, "Saving leaderboard to " .. fileName)
      jsonWriteFile(fileName, levelLeaderboards)
      dirtyLevels[levelName] = nil
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veFlexbodyDebug.lua
  settings[vEditor.vehicle:getJBeamFilename()] = deepcopy(state.settings)
  jsonWriteFile(settingsPath, settings)
end
@/lua/ge/extensions/editor/masterSpline.lua
              local gltf = util.buildRibbonGLTF(selSpline.divPoints, selSpline.divWidths, selSpline.binormals)
              jsonWriteFile(data.filepath, gltf, true)
            end,
@/lua/common/extensions/ui/imguiWire.lua
local function execute(buf)
  --jsonWriteFile('imgui_wire_test.json', buf, true)
  local resIDs = {}
@/lua/ge/extensions/editor/trafficSignalsEditor.lua
  fileName = fileName or editor.levelPath.."signals.json"
  jsonWriteFile(fileName, getSerializedSignals(), true)
  timedTexts.save = {"Signals saved!", 3}
      local saveData = {states = signalCtrlDefinitions.states, types = signalCtrlDefinitions.types}
      jsonWriteFile(editor.levelPath.."signalControllerDefinitions.json", saveData, true)
      core_trafficSignals.resetControllerDefinitions()
@/lua/ge/extensions/core/highscores.lua
local function setHighscores(scores)
  jsonWriteFile(highscoreFile,scores, true)
end
@/lua/ge/extensions/core/hotlapping.lua
  filePath = filePath or rootDir..getCurrentLevelIdentifier()..'/'..now..'.race.json'
  jsonWriteFile(filePath, pathData:onSerialize(), true)
  log('I', logTag, 'Saved hotlapping config to file: '..filePath)
@/lua/common/jbeam/loader.lua

  --jsonWriteFile('chosenPartsTree.json', chosenPartsTree, true)
  --jsonWriteFile('vehicle.json', vehicle, true)
  --jsonWriteFile('chosenPartsTree.json', chosenPartsTree, true)
  --jsonWriteFile('vehicle.json', vehicle, true)
  --jsonWriteFile('activePartsData.json', activePartsData, true)
  --jsonWriteFile('vehicle.json', vehicle, true)
  --jsonWriteFile('activePartsData.json', activePartsData, true)
    log('I', 'vehicleloader.debug', 'wrote file: ' .. fn)
    jsonWriteFile(fn, vehicleBundle.vdata, true)
    log('I', 'vehicleloader.debug', 'wrote file: ' .. fn)
    jsonWriteFile(fn, vehicleBundle.vdata.activePartsData, true)
    log('I', 'vehicleloader.debug', 'wrote file: ' .. fn)
    jsonWriteFile(fn, vehicleBundle.config, true)
    log('I', 'vehicleloader.debug', 'wrote file: ' .. fn)
    jsonWriteFile(fn, vehicleBundle.config.partsTree, true)
  end

  --jsonWriteFile('vehicleBundle.json', vehicleBundle, true)
@/lua/ge/extensions/util/dependencyTree.lua
  --dump(entities)
  jsonWriteFile('dependencytree.json', entities, true)
@/lua/ge/extensions/editor/resourceChecker/resourceUtil.lua
      forestContent[forestItem] = nil
      jsonWriteFile(foresData, forestContent, true)
    else
        log('I', '', 'Saved materials to '..file )
        jsonWriteFile(file, materialFile, true)
        job.yield()
@/lua/ge/extensions/editor/tech/roadArchitect/profiles.lua
      local encodedData = { profile = pSer }
      jsonWriteFile(data.filepath, encodedData, true)
    end,
@/lua/ge/extensions/gameplay/race/path.lua
  end
  --jsonWriteFile("testTT.json",{track = trackInfo, data = self:onSerialize()}, true)
  return true
@/lua/ge/extensions/editor/vehicleDetailViewer.lua
      local layoutFilename = saveFolder .. baseFilename  .. '.vehicleDetailSetting.json'
      jsonWriteFile(layoutFilename, onSerialize())
      onDeserialized(jsonReadFile(layoutFilename))
        if im.SmallButton('overwrite##overwriteLayouy_'..tostring(lidx)) then
          jsonWriteFile(layoutFilename, onSerialize())
          onDeserialized(jsonReadFile(layoutFilename))
@/lua/ge/extensions/ui/gridSelectorUtils/displayDataModule.lua
    end
    jsonWriteFile(dataFile, data, true, nil, true)
  end
@/lua/ge/extensions/editor/crawlEditor/presets.lua

  local success = jsonWriteFile(self.PRESETS_FILE, self.presets, true)
  if success then

  local success = jsonWriteFile(filepath, preset, true)
  if success then
@/lua/ge/extensions/flowgraph/nodes/states/stateNode.lua
        saveData.name = filename
        jsonWriteFile(data.filepath, saveData, true)
        log("I","","Saved State to " .. data.filepath)
@/lua/ge/extensions/editor/driftDataEditor.lua
local function saveDriftData(savePath)
  jsonWriteFile(savePath, driftData, true)
  local dir, filename, ext = path.split(savePath)
    local path = "levels/"..getCurrentLevelIdentifier().."/driftSpots/"..name
    jsonWriteFile(path.."/".."spot.driftSpot.json", newSpotData, true)
    if spotData.info then
      jsonWriteFile(path.."/info.json", spotData.info, true)
    end

  jsonWriteFile(spotData.racePath, {}, true)
  jsonWriteFile(spotData.bounds, {}, true)
  jsonWriteFile(spotData.racePath, {}, true)
  jsonWriteFile(spotData.bounds, {}, true)
  jsonWriteFile(path .. "/info.json", defaultInfoJson, true)
  jsonWriteFile(spotData.bounds, {}, true)
  jsonWriteFile(path .. "/info.json", defaultInfoJson, true)
  jsonWriteFile(path.."/".."spot.driftSpot.json", spotData.spatialInfo, true)
  jsonWriteFile(path .. "/info.json", defaultInfoJson, true)
  jsonWriteFile(path.."/".."spot.driftSpot.json", spotData.spatialInfo, true)
@/lua/ge/setSpawnpoint.lua
  data.levels[levelName].defaultSpawnPointName = defaultSPName
  local res = jsonWriteFile(M.settingsFilePath, data, true)
  if not res then
@/lua/ge/extensions/freeroam/levelStats.lua
  log('D', '', string.format("Saving stats for level %q, spawnpoint %q, to file: %q", levelName, spawnPointName, statsFilePath))
  jsonWriteFile(statsFilePath, stats, true)
end
@/lua/ge/extensions/util/groundModelDebug.lua
  tbl.options.colDensityShowText = colDensityShowText[0]
  jsonWriteFile(settingsPath, tbl, true)
end
  dump(data)
  jsonWriteFile(groundModelPath, data, true)
end
@/lua/ge/extensions/ui/apps.lua
      if userLayoutChanged then
        jsonWriteFile(userFilePath, userLayout, true)
        log("I","",string.format("User layout was updated. File: %s", userFilePath))
  data['filename'] = nil
  jsonWriteFile(filename, data, true)
  --dump({'saved layout: ' .. tostring(filename), data})
@/lua/vehicle/extensions/dynamicVehicleData.lua
    tableMergeRecursive(data, newData)
    jsonWriteFile(filepath, data, true)
  end
      --local touchedFilePath = "vehicles/" .. model_key .. "/info_" .. config_key .. ".touched"
      --jsonWriteFile(touchedFilePath, {}, true)
@/lua/ge/extensions/editor/flowgraph/main.lua
          local fn =self.mgr.savedDir.. self.mgr.savedFilename:sub(0,-10)..'json'
          jsonWriteFile(fn, scenarioJson, true, 20)
          --dump("write to " .. fn)
@/lua/ge/extensions/util/screenshotCreator.lua
local function saveCameraConfig()
  jsonWriteFile("/settings/thumbnailCameraConfig.json", cameraConfigFile, true)
end
@/lua/ge/extensions/editor/main.lua
local function saveExtensionsSettings()
  jsonWriteFile(editorExtensionsSettingsPath, M.extensionsSettings, true)
end
  extensions.hook("onEditorSaveState", state)
  jsonWriteFile(filePath or editorCurrentStatePath, state, true)
end
@/lua/ge/extensions/editor/api/material.lua
  matFileContent[materialName] = nil
  jsonWriteFile(materialFilename, matFileContent, true)
end
@/lua/ge/extensions/util/maptiles.lua
  end
  jsonWriteFile(outputDirectory.."/navgraph.json", {list = navgraph}, true)
end
            }
            jsonWriteFile('/tiles/metadata.json', jsonData, true)
          else
      }
      jsonWriteFile('/tiles/metadata.json', jsonData, true)
      if not show3DWorld[0] then
@/lua/ge/extensions/editor/assemblySpline.lua
            function(data)
              jsonWriteFile(data.filepath, splineMgr.copyAssemblySplineProfile(selSpline), true)
            end,
@/lua/ge/extensions/gameplay/crawl/saveSystem.lua

  local success = jsonWriteFile(filePath, serializedData, true)
  if success then

  local success = jsonWriteFile(filePath, serializedData, true)
  if success then

  local success = jsonWriteFile(filePath, serializedData, true)
  if success then

  local success = jsonWriteFile(filePath, serializedData, true)
  if success then

  local success = jsonWriteFile(filepath, serializedData, true)
  if success then
local function savePlayerTrail(trail, dir)
  jsonWriteFile(dir .. trail.id ..".json", trail.saveData, true)
  log("I", logTag, "Saved Crawl Score for " .. trail.id .. " to " .. dir)
@/lua/ge/extensions/core/environment.lua
  end
  jsonWriteFile('groundmodels_dump.json', gms, true)
end
@/lua/ge/extensions/flowgraph/manager.lua
  end
  jsonWriteFile(savedata.filepath, macroSerialized, true, 20)
  self.newMacroAdded = true
  self.macroTags = {}
  --  jsonWriteFile(savedata.filepath, macroSerialized, true)
  -- self.newMacroAdded = true
  end
  jsonWriteFile("flowgraphEditor/data-temp.json", res, true, 20)
@/lua/ge/extensions/core/settings/settings.lua
  FS:directoryCreate(M.impl.path)
  jsonWriteFile(M.impl.pathLocal, localValues, true)
  jsonWriteFile(M.impl.pathCloud, cloudValues, true)
  jsonWriteFile(M.impl.pathLocal, localValues, true)
  jsonWriteFile(M.impl.pathCloud, cloudValues, true)
  if not shipping_build then
  if not shipping_build then
    jsonWriteFile(M.impl.pathInternal, M.impl.internalValues, true)
  end
@/lua/common/json-ast.lua
      writeFile(filename .. '_dump_fast.txt', dumpFast)
      jsonWriteFile(filename .. '.ast.json', res, true)
      return
    writeFile(filename .. '_', str2)
    jsonWriteFile(filename .. '.ast.json', res, true)
    return false
  if writeAST then
    jsonWriteFile(filename .. '.ast.json', res, true)
    print('wrote AST: ' .. tostring(filename .. '.ast.json'))
@/lua/ge/extensions/editor/raceEditor.lua
  local json = race:onSerialize()
  jsonWriteFile(savePath, json, true)
  local dir, filename, ext = path.split(savePath)
@/lua/ge/extensions/editor/missionEditor.lua
    if not FS:fileExists(raceFname) then
      jsonWriteFile(raceFname, {}, true)
    end
  writeFile("translationText.json",table.concat( translationStrings, ",\n")..",\n")
  jsonWriteFile("translationJson.json",translationJson, true)
  ]]
@/lua/ge/extensions/gameplay/missions/proceduralMissionGenerators/timeTrialMissions.lua
        cachedRaceFiles[cacheFile] = data
        jsonWriteFile(cacheFile, data, true)
      else
      else
        jsonWriteFile(cacheFile, {invalid = true}, true)
        cachedRaceFiles[cacheFile] = {invalid = true}
            end
            --jsonWriteFile(mission.missionFolder..'/race.race.json', race, true)
          end
@/lua/ge/extensions/editor/mapSensorEditor.lua
    function(data)
      jsonWriteFile(data.filepath, sensors, true)
    end,
@/lua/ge/extensions/editor/dragRaceEditor/dragSettings.lua
      -- Save the default settings to the selected file
      jsonWriteFile(data.filepath, defaultSettings, true)
      log('D', 'drag_race_editor', 'Created new drag settings file: ' .. data.filepath)
  local cleanData = deepcopy(dragSettings)
  jsonWriteFile(filePath, cleanData, true)
  log('D', 'drag_race_editor', 'Saved drag settings to: ' .. filePath)
@/lua/ge/extensions/util/logStreams.lua
local function saveJson(data)
  jsonWriteFile(logfileJson, data, true)
end
@/lua/ge/extensions/editor/missionPlaybook.lua
local function savePlaybook(book, savePath)
  jsonWriteFile(savePath, M.book, true)
end
@/lua/ge/extensions/core/vehicle/partmgmt.lua

  local writeRes = jsonWriteFile(filename, res, true)
  if writeRes then

  local writeRes = jsonWriteFile(filename, res, true)
  if writeRes then

  local res = jsonWriteFile(filename, data, true)
  if res then
@/lua/ge/extensions/gameplay/missions/progress.lua
  mission.saveData.dirtyDate = dirtyDate
  return jsonWriteFile(path, mission.saveData, true)
end
  table.insert(file, entry)
  jsonWriteFile(permaLogFile, file, true)
  --log("","D",dumps(entry))
  -- update (if application quits before finishing, we should replace saveFile with backupFile)
  jsonWriteFile(saveFile, mission.saveData, true)
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
    filename = 'trackEditor/'..name..'.json';
    jsonWriteFile(filename, exported, true)
    log('I', logTag, 'Serialized track to file Documents/BeamNG/'..filename)
@/lua/ge/extensions/gameplay/rally/notebook/structured/textCompositor.lua
function C:writeEnumerated(fname, enumerated)
  jsonWriteFile(fname, enumerated, true)
end
@/lua/ge/extensions/editor/forestEditor.lua
    pM_textureSets.data[tostring(pM_selectedTextureSetId)] = pM_selectedTextureSetData
    jsonWriteFile(pM_textureSetsFilePath, pM_textureSets, true)
    pM_textureSetDirty = false
@/lua/ge/extensions/editor/roadTemplateEditor.lua
  local filename = "levels/".. editor.getLevelName() .. "/roadtemplates/" .. templateName .. ".road.json"
  if jsonWriteFile(filename, data, true) then
    log('I', logTag, "Creation of file \"" .. filename .. "\" successful")
@/lua/ge/extensions/gameplay/rally/transcripts/path.lua
  local json = self:onSerialize()
  jsonWriteFile(self.fname, json, false)
  log('I', logTag, 'saved transcripts file '..self.fname)
@/lua/ge/extensions/editor/slotTrafficEditor.lua
    local levelDir = path.split(getMissionFilename())
    jsonWriteFile(levelDir .. "navgraph.json", mapNodesCopy, true)
    jsonWriteFile(levelDir .. "roads.json", roadsCopy, true)
    jsonWriteFile(levelDir .. "navgraph.json", mapNodesCopy, true)
    jsonWriteFile(levelDir .. "roads.json", roadsCopy, true)
    navgraphDirty = false
@/lua/ge/client/postFx.lua

  jsonWriteFile(filename, exports, true)
@/lua/ge/extensions/flowgraph/modules/fileModule.lua
    self.mgr:logEvent("Saving file " .. file,"I", "File " .. p .. " has been saved.")
    jsonWriteFile(p, self:getFile(file), true)
  end
@/lua/vehicle/extensions/escMeasurement.lua
    data.vehicleData.skewStiffnessRear = floor(measurementsSkewStiffness.maxStiffnessRear / 1000) * 1000
    jsonWriteFile(filepath, data, true)
  end
@/lua/ge/extensions/core/ropeVisualTest.lua

  local success = jsonWriteFile(filePath, data, true)
  if success then
@/lua/ge/extensions/core/vehicle/manager.lua

  --jsonWriteFile('jbeam_loading_NEW_stage1.json', vehicleBundle, true)
  local spawnPhysics = M.autoSpawnPhysics
@/lua/ge/extensions/editor/api/gui.lua
  state.windowsState = windowsState
  jsonWriteFile(customFilename or windowsStateFileName, state, true)
end
@/lua/ge/extensions/gameplay/race/race.lua
        local fullpath = "raceRecord/"..os.date("!%Y-%m-%d--%H-%M-%S")..(self.saveFileSuffix and ("-"..self.saveFileSuffix) or "").."/"
        jsonWriteFile(fullpath.."path.path.json",self.path:onSerialize(), true)
        jsonWriteFile(fullpath.."times.json",state.historicTimes, true)
        jsonWriteFile(fullpath.."path.path.json",self.path:onSerialize(), true)
        jsonWriteFile(fullpath.."times.json",state.historicTimes, true)
        jsonWriteFile(fullpath.."simpleInfo.json",simpleInfo, true)
        jsonWriteFile(fullpath.."times.json",state.historicTimes, true)
        jsonWriteFile(fullpath.."simpleInfo.json",simpleInfo, true)
        log("I","","Written complete race history to "..fullpath)
@/lua/ge/extensions/editor/flowgraphEditor.lua
  local time = os.time(os.date("!*t"))
  jsonWriteFile(autoSaveDir .. time.."_"..mgr.name:gsub('%W','_')..".flow.json", data, true, 20)
  log("I","autosave","Autosaved flowgraph under " .. autoSaveDir .. time.."_"..mgr.name..".flow.json")
  local data = mgr:_onSerialize()
  jsonWriteFile(mgr.savedDir .. mgr.savedFilename, data, true, 20)
  end
  --jsonWriteFile("flowgraphEditor/data_temp.json", res, true)
  res.windows = {}
@/lua/ge/extensions/editor/decalSpline.lua
            function(data)
              jsonWriteFile(data.filepath, splineMgr.copyDecalSplineProfile(selSpline), true)
            end,
@/lua/ge/extensions/scenario/scenarios.lua

  jsonWriteFile('settings/playerStatistics.json', data)
end
@/lua/ge/extensions/freeroam/freeroamConfigurator.lua

  local success = jsonWriteFile(CONFIG_FILE, saveData, true, nil, true)
  if success then
@/lua/ge/extensions/editor/terrainEditor.lua
        tb:exportHoleMaps(dir .. tbName, "png")
        jsonWriteFile(dir .. tbName .. "_terrainPreset.json", data, true)
        success = true

  jsonWriteFile(fddata.filepath, data, true)
end
@/lua/ge/extensions/core/input/bindings.lua
  -- uncomment for creating a nice file to debug things
  --jsonWriteFile('current_bindings.json', M.bindings, true)
end
  local path = getWritingPath(vehicleName, data.devicetype, data.vidpid)
  if not jsonWriteFile(path, diffData, true) then -- some simple indentation
    log('E', 'bindings', "Couldn't write bindings file to: "..path)

            if jsonWriteFile(targetPath, data, true) then
              log('I', 'bindings', "Migrated Playstation inputmap: "..sourcePath.." -> "..targetPath)
@/lua/ge/extensions/tech/terrainImporter.lua
  extensions.editor_terrainAndRoadImporter.importTerrain(pngPath, zMax)
  jsonWriteFile('temp/terrainRoadImport.json', roads, true)
  extensions.editor_terrainAndRoadImporter.importRoads('temp/terrainRoadImport.json', DOI, margin)
local function peaksAndRoadImport(peaks, roads, DOI, margin)
  jsonWriteFile('temp/terrainRoadImportPeaks.json', peaks, true)
  extensions.editor_terrainAndRoadImporter.conformTerrainToPeaks('temp/terrainRoadImportPeaks.json')
  extensions.editor_terrainAndRoadImporter.conformTerrainToPeaks('temp/terrainRoadImportPeaks.json')
  jsonWriteFile('temp/terrainRoadImport.json', roads, true)
  extensions.editor_terrainAndRoadImporter.importRoads('temp/terrainRoadImport.json', DOI, margin)
@/lua/ge/extensions/editor/dragRaceEditor/strips.lua
    -- Save the default strip to the selected file
    local success = jsonWriteFile(data.filepath, defaultStrip, true)
    if success then
@/lua/ge/extensions/editor/roadSpline.lua
              local profile = groupMgr.copyGroupProfile(selGroup)
              jsonWriteFile(data.filepath, profile, true)
            end,
@/lua/ge/extensions/editor/dynamicDecals/debugSection.lua
        if next(outData) then
          jsonWriteFile(string.format("%s/dynamicDecals/main.materials.json", vehicle), outData, true)
        end
@/lua/ge/extensions/gameplay/rally/tools/loopToolbox.lua
  }
  jsonWriteFile(settingsFilePath, data, true)
end
@/lua/ge/extensions/editor/scriptAIEditor.lua
        isCamWinVisible = editor.isWindowVisible(camWinData.name) })}
      jsonWriteFile(data.filepath, encodedData, true)
    end,
    function(data)
      jsonWriteFile(data.filepath, script, true)
    end,
@/lua/ge/extensions/core/quickAccess.lua
local function saveRecentActions()
  jsonWriteFile(recentActionsFile, recentActions, true, nil, true)
end
  end
  jsonWriteFile(dynamicSlotSettingsFile, savedDynamicSlotSettings, true, nil, true)
end
@/lua/ge/extensions/gameplay/drag/saveSystem.lua

  jsonWriteFile(filePath, dialTimes, true)
end
  local savePath = dir .. "/dragDialTimes.json"
  local success = jsonWriteFile(savePath, dialTimes, true)
  if success then
M.saveFacility = function(facility, filePath)
  return jsonWriteFile(filePath, facility, true)
end
M.saveStrip = function(strip, filePath)
  return jsonWriteFile(filePath, strip, true)
end
M.saveLane = function(lane, filePath)
  return jsonWriteFile(filePath, lane, true)
end
M.saveWaypoint = function(waypoint, filePath)
  return jsonWriteFile(filePath, waypoint, true)
end
  local success, error = pcall(function()
    jsonWriteFile(filePath, facilities, true)
  end)
@/lua/ge/extensions/editor/multiSpawnManager.lua
local function saveGroup(file, filePath) -- saves the current group to file
  jsonWriteFile(filePath, processGroup(currGroup), true)
  prevFilePath, prevFileName = path.split(filePath)
@/lua/ge/extensions/career/modules/unlockFlags.lua
  --local filePath = currentSavePath .. "/career/" .. saveFile
  --jsonWriteFile(filePath, flags, true)
end
@/lua/vehicle/extensions/tech/techCore.lua
  local script = ai.stopRecording()
  jsonWriteFile(request['filename'], script, true)
  request:sendACK('CompletedStopRecording')
@/lua/console/bananabench-json.lua
--dump(res)
jsonWriteFile(outputFilename, res, true)
@/lua/ge/extensions/editor/dynamicDecals/brushes.lua
  end
  jsonWriteFile(brushesPath, brushes, true)
end

  jsonWriteFile(brushesPath, brushes, true)
end
    brushes = {}
    -- jsonWriteFile(brushesPath, brushes, true)
  end
@/lua/ge/extensions/editor/mainToolbar.lua
  }
  jsonWriteFile(settingsPath, dataToSave, true)
end
@/lua/ge/extensions/util/compileMeshes.lua
  log('I', 'work', 'saved files to be hard linked to file: cdae_compilation_hardlink_todo.json')
  jsonWriteFile('cdae_compilation_hardlink_todo.json', hardLinkFilesTodo, true)
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
  end
  jsonWriteFile("settings/trackBuilderSettings.json", settings, true)
end
@/lua/ge/extensions/editor/sidewalkSpline.lua
          function(data)
            jsonWriteFile(data.filepath, splineMgr.copySidewalkSplineProfile(selSpline), true)
          end,
            function(data)
              jsonWriteFile(data.filepath, splineMgr.copySidewalkSplineProfile(selSpline), true)
            end,
@/lua/ge/extensions/editor/perfProfiler.lua
      file.filepath = nil
      jsonWriteFile(metadataFile.filepath, file )
    end
@/lua/ge/extensions/editor/api/dynamicDecals/textures.lua

  jsonWriteFile(sidecarFilePath, data)
    local data = shallowcopy(sidecarTemplate)
    jsonWriteFile(sidecarFilePath, data)
  end
@/lua/ge/extensions/career/modules/partInventory.lua
  end
  jsonWriteFile(currentSavePath .. "/career/partInventory.json", {serialize(partInventoryCopy)}, true)
end
@/lua/ge/extensions/gameplay/missions/missions.lua
  -- write pretty
  jsonWriteFile(targetFolder, data, true)
  log("I","","Wrote mission successfully to " .. targetFolder)
@/lua/ge/extensions/editor/gen/test.lua
				--'/art/shapes/common/building_architect_modules/bat_materials/'
--            jsonWriteFile(pth..'/wall.materials.json', dmat)
			jsonWriteFile(pth..'/top.materials.json', dmat)
--            jsonWriteFile(pth..'/wall.materials.json', dmat)
			jsonWriteFile(pth..'/top.materials.json', dmat)
				U.dump(amat,'?? json_DONE:'..tableSize(dmat))
@/lua/ge/extensions/gameplay/statistic.lua
  -- log("E","save","!!!!!!!!!!!!!!!!!!!!")
  if jsonWriteFile(fileName..".tmp",fileData) then
    FS:removeFile(fileName)
@/lua/ge/extensions/editor/tech/roadArchitect/junctions.lua
      local encodedData = { data = { junction = jSer, pos = getJunctionCentroid(jIdx), rot = computeInitRot(jIdx) } }
      jsonWriteFile(data.filepath, encodedData, true)
    end,
@/lua/ge/extensions/core/vehicle/mirror.lua
local function settingsSave()
  jsonWriteFile("/settings/mirrorOffsets.json", offsetData, true)
end
@/lua/ge/extensions/util/export.lua
  local jsonHandler = function(gltfRoot)
    jsonWriteFile(tostring(filename), gltfRoot, true, 20)
    bufferPathPattern = nil
@/lua/ge/extensions/editor/assetManagementTool.lua
      json.linkPath = nil
      jsonWriteFile(record.linkPath, json, true)
    end
local function saveDuplicatesList()
  jsonWriteFile("/temp/assetMigrationList.json", assetsByHash, true)
end
@/lua/common/devUtils.lua
  flattenTable(snapshot)
  jsonWriteFile(filename, snapshot, true)
end
@/lua/ge/extensions/career/saveSystem.lua
  tempFileName = tempFileName or filename..".tmp"
  if jsonWriteFile(tempFileName, obj, pretty, numberPrecision) then
    if FS:renameFile(tempFileName, filename) == 0 then
@/lua/ge/extensions/editor/sitesEditor.lua
  local json = sites:onSerialize()
  jsonWriteFile(savePath, json, true)
  previousFilepath = dir
@/lua/ge/extensions/core/repository.lua
  optOutData[mod_id] = nil -- remove it from the opt-out list
  jsonWriteFile(optoutFile, optOutData)
  optOutData[mod_id] = true
  jsonWriteFile(optoutFile, optOutData)
@/lua/ge/extensions/core/hardwareinfo.lua
  }
  jsonWriteFile(filename, hw, true)
end
@/lua/ge/extensions/editor/assetDeduplicator.lua
            if rem == 0 then
                jsonWriteFile(k..".link", linkTable, true)
                log('I', '', 'Linked '..k..' with '..v )
                if rem2 == 0 then
                  jsonWriteFile(k..".link", linkTable, true)
                  log('I', '', 'Linked '..k..' with '..v )
    end
    jsonWriteFile(cacheFile, cacheData, true)
  end
@/lua/ge/extensions/campaign/campaignsLoader.lua
    M.saveDataTable.header = {version = 1, type = 'campaignSave', title = campaign.meta.title}
    jsonWriteFile(filename, M.saveDataTable, true)
    M.saveDataTable = nil
@/lua/ge/extensions/flowgraph/modules/missionReplayModule.lua

  jsonWriteFile(metaFileName, metaInfo)
end
@/lua/ge/extensions/editor/resourceChecker.lua
            log('I', '', 'Saved materials to '..k )
            jsonWriteFile(k, materialFile, true)
            resourceUtil.resaveMaterial(k)
        local path = filepath.."/resourceChecker_matData_"..res..".json"
        jsonWriteFile(path, resExplorer[6][res], true)
        if FS:fileExists(path) then Engine.Platform.exploreFolder(path) else log('E', '', 'Path :'..path..' does not exist' ) end
      local path = filepath.."/resourceChecker_"..testName..".json"
      jsonWriteFile(path, data, true)
      local addText = "//"..text:gsub('\n','').."\n"
@/lua/ge/extensions/gameplay/missions/missionScreen.lua
          if im.Button("Save") then
            jsonWriteFile("/gameplay/testing/missionScreen_"..layout.recordedAt..".json", layout, true)
            layoutsChanged = true
@/lua/ge/extensions/editor/drivePathEditor.lua
              local serData = { splines = drivePathSplinesSer, mapName = core_levels.getLevelName(getMissionFilename()), tool = toolPrefixStr }
              jsonWriteFile(data.filepath, serData, true)
            end
@/lua/ge/extensions/editor/sensorConfigurationEditor.lua
        sensors = sensorConfigs[vehicle.vid] }
      jsonWriteFile(data.filepath, d, true)
    end,
@/lua/ge/extensions/editor/meshSpline.lua
            function(data)
              jsonWriteFile(data.filepath, splineMgr.copyMeshSplineProfile(selSpline), true)
            end,
@/lua/ge/extensions/util/nodeBeamExport.lua

  local ok = jsonWriteFile(filename, graph, true)
  if ok then
@/lua/ge/extensions/editor/trafficManager.lua
    local signalsData = {instances = saveData.signals.instances, controllers = saveData.signals.controllers, sequences = saveData.signals.sequences}
    jsonWriteFile(saveData.signalsFile, signalsData, true)

  jsonWriteFile(filePath, saveData, true)
@/lua/ge/extensions/gameplay/drift/saveLoad.lua
local function saveSpot(spot, dir)
  jsonWriteFile(dir .. spot.id ..".json", spot.saveData, true)
  log("I","","Saved Drift Score for " .. spot.id .. " to " .. dir)