读取json文件,解析base64的value

json格式

{
//key
"header": ["a","b","c","d"....]
//base64value
"data": "Fo1NPq+5xT8WjU0+AAAAAJFSBj/eNBs+D0TOPk9GHUBP8E4+AAAAAHlxMz8AAAAAAAA
AABPdXT+0VLm+AAAAAN40Gz4AAAAAAAAAAAAAAAAAAAAAAAAAAIHlCT/yzuw/ZfZ5Pr56Wr8AAAA
ACKzJPrVyrT0AAAAAgeUJPw9Ezj4AAAAAAAAAAAAAwECb94Q/AAAAAAAAAAAAAAAAAAAAAAAAAAA
cbDg+AAAAAAAAAADrRjA/AAAAAA9Ezj6RUgY/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFo1NPt4
0Gz4AAAAAzmR9PSKxkD4AAAAAAAAAACKxkD4isZA+/1seQGpprz7nsAFAAAAAAAAAAAAAAAAAvnp
av7IxPj+Ozrk+AAAAAFaU3r4xcZU/AAAAAAAAAAAAAAAAtXKtPf6NBz//KLw/D0TOPgAAAAAAAAA
AZfZ5PltCDD08KIc/AAAAANpPGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP8E4+AAAAAAAAAAA
AAAAAZfZ5PiLXwj9oQ9o/AAAAAAAAAAAAAAAAAAAAAAAAAABqaa8+AAAAALRUub4AAAAAAAAAAAA
AAACvucU/57ABQAAAAADusOQ+MXGVP0nUQj8WjU0+AAAAAAAAAAAAAAAAAAAAAFtCDD15cTM/E91
dPwAAAAAAAAAAAAAAAJv3hD9oQ9o/AAAAALIxPj8AAAAACKzJPmqc3z8i18I/uQRXPwAAAAAAAAA
AAAAAACKxkD4AAAAAAAAAAN40Gz7OZH09ZfZ5Pmpprz7/KLw/AAAAAO1MLD8AAAAAHGw4PgAAwEB
WlN6+AAAAAGpprz4AAAAAJVcxOwAAAAAAAAAAT0YdQAAAAAAAAAAAAAAAAAVvSz5gDsY/BW9LPgA
AAAAuSAc/f4MbPg9Ezj50oB1AORJPPgAAAADbNDQ/AAAAAAAAAAC8pF4/NyC7vgAAAAB/gxs+AAA
AAAAAAAAAAAAAAAAAAAAAAAAcaQo/yOjtP+OoeT5o........."
}

解析data 

using System;
using System.IO;
using System.Text;
using Newtonsoft.Json.Linq;

class Program
{
    static void Main()
    {
        // 定义文件路径
        string FilePath = "C:\\Users\\NN\\Desktop\\SkyCreatorPlugin\\output.json";

        try
        {
            // 检查文件是否存在
            if (File.Exists(FilePath))
            {
                // 读取JSON文件内容
                string jsonContents = File.ReadAllText(FilePath);

                // 解析JSON字符串为JObject对象
                JObject jsonObject = JObject.Parse(jsonContents);

                // 获取JSON中的"data"字段
                JToken dataToken = jsonObject["data"];

                // 检查是否成功获取到"data"字段且数据类型为字符串
                if (dataToken != null && dataToken.Type == JTokenType.String)
                {
                    // 提取Base64编码的二进制数据
                    string base64Data = (string)dataToken;
                    byte[] bytes = Convert.FromBase64String(base64Data);

                    // 计算要打印的浮点数个数,最多100个(每个浮点数占4个字节)
                       限制一百个是因为数据可能无限长,我原来的数据就有几千万 
                       所以给只打印前一百,如果想全部打印直接打印bytes的长度
                    int printCount = Math.Min(100, bytes.Length / 4); 

                    // 循环解析并打印浮点数
                    for (int i = 0; i < printCount; i++)
                    {
                        // 计算当前浮点数在字节数组中的起始位置
                        int byteIndex = i * 4;

                        // 将字节数组中的4个字节转换为单精度浮点数
                        float decodedFloat = BitConverter.ToSingle(bytes, byteIndex);

                        // 打印序号和解码后的浮点数
                        Console.WriteLine(i + "  : " + decodedFloat);
                    }
                }
                else
                {
                    Console.WriteLine("找不到 \"data\" 字段或其数据类型不正确");
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("错误:" + ex.Message);
        }
    }
}

以上为自己写代码的记录,以防脑残忘了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值