首页 新闻 会员 周边 捐助

怎么解析这个json字符串

0
悬赏园豆:5 [待解决问题]

string s = "{"fa490c67-bdb2-4ddd-810d-894e9ceeba0e":{"top":191,"left":55,"process_to":["bd7c788d-9d2f-48da-80ad-726edb8dffb1"]},"bd7c788d-9d2f-48da-80ad-726edb8dffb1":{"top":171,"left":281,"process_to":[]}}";

前端传来的这个json,我怎么去解析它,用dynamics解析出来的不知道怎弄,或者怎么建一个dto来解析

灬丶的主页 灬丶 | 初学一级 | 园豆:9
提问于:2020-04-08 16:55
< >
分享
所有回答(4)
0

JObject data =JsonConvert.DeserializeObject<JObject>(str);
Console.WriteLine(data["fa490c67-bdb2-4ddd-810d-894e9ceeba0e"]["top"]);

tenghao510 | 园豆:179 (初学一级) | 2020-04-08 17:43
但是解析出来的数据不好对应实体
支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-04-09 10:59

@灬丶: 我这是举个例子,也可以直接循环data

支持(0) 反对(0) tenghao510 | 园豆:179 (初学一级) | 2020-04-09 11:05
0

fastjson或者gson

ycyzharry | 园豆:25683 (高人七级) | 2020-04-08 23:33
0

用fastjson解析

江云风 | 园豆:889 (小虾三级) | 2020-04-09 16:52
0

你的问题应该是,在解析这个json的时候,即使创建一个DTO,你也不知道DTO的字段名称应该是什么(因为接收到json的key其实是一个没有规律的字符),所以不好操作。
下面是我的解析代码:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.util.Iterator;
import java.util.Map;

public class JsonUtilsTest {

    @Test
    public void test() throws JsonProcessingException {
        String s = "{\"fa490c67-bdb2-4ddd-810d-894e9ceeba0e\":{\"top\":191,\"left\":55,\"process_to\":[\"bd7c788d-9d2f-48da-80ad-726edb8dffb1\"]},\"bd7c788d-9d2f-48da-80ad-726edb8dffb1\":{\"top\":171,\"left\":281,\"process_to\":[]}}";
        ObjectMapper objectMapper = new ObjectMapper();
        final JsonNode jsonNode = objectMapper.readTree(s);

        // 进行迭代
        final Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
        fields.forEachRemaining(item -> {
            System.out.println(item.getKey() + " => " + item.getValue());
        });
        // fa490c67-bdb2-4ddd-810d-894e9ceeba0e => {"top":191,"left":55,"process_to":["bd7c788d-9d2f-48da-80ad-726edb8dffb1"]}
        // bd7c788d-9d2f-48da-80ad-726edb8dffb1 => {"top":171,"left":281,"process_to":[]}
        
        // 对于value,可以封装一个dto,包含top、left、process_to三个属性
    }
}
寻觅beyond | 园豆:923 (小虾三级) | 2020-04-09 23:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册