分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

Triple transfer json

发布时间:2023-09-06 01:52责任编辑:沈小雨关键词:jsjson
 ?public class Triple ???{ ???????public Triple(string _S, string _P, string _O) ???????{ ???????????this._S = _S; ???????????this._P = _P; ???????????this._O = _O; ???????} ???????public string _S { set; get; } ???????public string _P { set; get; } ???????public string _O { set; get; } ???}

function

static void TripleTransferJson(string _S, ref JObject obj) ???????{ ????????????if (list == null || list.Count == 0) return; ???????????List<Triple> sublist = list.Where(a => a._S == _S).ToList(); ???????????obj.Add("PrimaryKey", _S); ???????????//get property Count ???????????Dictionary<string, int> dt = GetPropertyCount(sublist); ???????????foreach (var item in sublist) ???????????{ ???????????????if (item._O.StartsWith("\"") && dt[item._P] == 1) ???????????????????obj.Add(item._P, item._O); ???????????????if (item._O.StartsWith("\"") && dt[item._P] > 1) ???????????????{ ???????????????????if (obj.ContainsKey(item._P)) ???????????????????????((JArray)obj[item._P]).Add(item._O); ???????????????????else ???????????????????????obj.Add(item._P, new JArray(item._O)); ???????????????} ???????????????sublist = list.Where(a => a._S == item._O).ToList(); ???????????????JObject jObj = new JObject(); ???????????????TripleTransferJson(item._O, ref jObj); ???????????????if (dt[item._P] == 1 && !item._O.StartsWith("\"")) ???????????????????obj.Add(item._P, jObj); ???????????????if (dt[item._P] > 1 && !item._O.StartsWith("\"")) ???????????????{ ???????????????????if (obj.ContainsKey(item._P)) ???????????????????????((JArray)obj[item._P]).Add(jObj); ???????????????????else ???????????????????????obj.Add(item._P, new JArray(jObj)); ???????????????} ???????????} ???????} ???????static Dictionary<string, int> GetPropertyCount(List<Triple> list) ???????{ ???????????if (list == null || list.Count == 0) return null; ???????????Dictionary<string, int> dt = new Dictionary<string, int>(); ???????????var pc = from p in list ????????????????????group p by p._P into g ????????????????????select new { property = g.Key, count = g.Count() }; ???????????foreach (var item in pc) ???????????{ ???????????????dt.Add(item.property, item.count); ???????????} ???????????return dt; ???????}

test data

 ?list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.name", "\"Wangshuang")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.type", "\"people.person")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.gender", "\"female")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.name", "\"sky")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.image", "http://knowledge.microsoft.com/sfesfesfefd")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefs", "type.object.image", "http://knowledge.microsoft.com/sfesfesfef3")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefd", "type.object.type", "\"common.image")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfef3", "type.object.type", "\"common.image")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfefd", "type.image.uri", "\"http://www.baidu.com")); ???????????list.Add(new Triple("http://knowledge.microsoft.com/sfesfesfef3", "type.image.uri", "\"http://www.baidu.com")); ???????????????????????JObject obj = new JObject(); ???????????TripleTransferJson("http://knowledge.microsoft.com/sfesfesfefs", ref obj); ???????????string json = obj.ToString();

test result

{ ?"PrimaryKey": "http://knowledge.microsoft.com/sfesfesfefs", ?"type.object.name": [ ???"\"Wangshuang", ???"\"sky" ?], ?"type.object.type": "\"people.person", ?"type.object.gender": "\"female", ?"type.object.image": [ ???{ ?????"PrimaryKey": "http://knowledge.microsoft.com/sfesfesfefd", ?????"type.object.type": "\"common.image", ?????"type.image.uri": "\"http://www.baidu.com" ???}, ???{ ?????"PrimaryKey": "http://knowledge.microsoft.com/sfesfesfef3", ?????"type.object.type": "\"common.image", ?????"type.image.uri": "\"http://www.baidu.com" ???} ?]}

Triple transfer json

原文地址:https://www.cnblogs.com/skywss27/p/8978132.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved