json char with too many decimals, need removal
2 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
dpb
2021 年 5 月 30 日
I knew Stephen or similar would be along...
You'll note I specifically did NOT say it was elegant... :)
採用された回答
Stephen23
2021 年 5 月 30 日
編集済み: Stephen23
2021 年 5 月 31 日
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 件のコメント
Rik
2021 年 5 月 31 日
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.
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!