You can specify the build directory with the VariantDir() function, or as part of the SConscript() call. All of the different options are discussed here. Considering you dont want to use several SConstruct files, you should just use the VariantDir() function as described in more detail here.
Here is a simple example:
env = Environment()
# It may be as simple as setting src_dir='.', but set accordingly
# duplicate=0 tells SCons NOT to copy source files to variantDir, set accordingly
# VariantDir() can be called multiple times so as to change dirs per builder call
VariantDir(variant_dir = 'pathToBuildDir', src_dir = 'pathToSource', duplicate=0)
# Now call the builders here
Its still not clear why you want to mix json with SCons. Unless you have some very compelling reasons to do so, I would suggest keeping it all in SCons, which is Python.
EDIT: I just realized you asked about creating a SConscript object, not a file.
I looked through the SCons programming APIs and didnt find anything that allows you to create a SConscript object. Actually, I dont think the concept of a SConscript object exists, since it just treats calls to the SConscript() function as files that need to be opened and processed, and they are almost treated as an extension to the SConstruct.
So, to summarize: You'll either have to create subsidiary SConscript files, or work with calls to VariantDir(). Depending on your project directory structure, it may not be necessary to create SConscript files. You could just do everything from the root SConstruct. The SConscript files arent necessary, they just help organize the build scripts better.