json char with too many decimals, need removal
    7 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Martin
 el 29 de Mayo de 2021
  
    
    
    
    
    Comentada: Rik
      
      
 el 31 de Mayo de 2021
            I got some json str = '{"hund": 0.3253533250000000000000000000000000, "kat": "dfsdfs", "baenkebider": 0.002021203321320000000000000000000000}';
In reality its a longer string with even more figures. I need to remove all those long decimals. 7-8 decimals is enough, so I end up with something like:
str = '{"hund": 0.3253533, "kat": "dfsdfs", "baenkebider": 0.0020212}';
If someone can help with an elegant solution I will appreciate it a lot!
Thanks in advance,
-best
mergh
3 comentarios
  dpb
      
      
 el 30 de Mayo de 2021
				I knew Stephen or similar would be along...
You'll note I specifically did NOT say it was elegant... :)
Respuesta aceptada
  Stephen23
      
      
 el 30 de Mayo de 2021
        
      Editada: Stephen23
      
      
 el 31 de Mayo de 2021
  
      str = '{"hund": 0.3253533250000000000000000000000000, "kat": "dfsdfs", "baenkebider": 0.002021203321320000000000000000000000}';
Method one (truncate to 9 characters):
out = regexprep(str,'\d+\.\d+','${$&(1:9)}')
Method two (seven fractional digits):
fun = @(s)sprintf('%.7f',sscanf(s,'%f'));
out = regexprep(str,'\d+\.\d+','${fun($&)}')
2 comentarios
  Rik
      
      
 el 31 de Mayo de 2021
				This will of course not work on an arbitrary JSON string, so you need to be careful if you want to do so. You could consider using a custom JSON encoder that allows you to trim trailing 0 in decimal notation.
Más respuestas (0)
Ver también
Categorías
				Más información sobre JSON Format en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



